package Ġcom . file . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Log Ċ import Ġcom . tencent . smt t . export . external . T bs Core Settings Ċ import Ġcom . tencent . smt t . sdk . Qb Sdk Ċ import Ġcom . tencent . smt t . sdk . Qb Sdk . Pre Init Callback Ċ import Ġcom . tencent . smt t . sdk . T bs Downloader Ċ import Ġcom . tencent . smt t . sdk . T bs Listener Ċ Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin . Flutter Plugin Binding Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Aware Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Plugin Binding Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ Ċ /** Ċ Ġ* ĠFlutter File View Plugin Ċ Ġ*/ Ċ class ĠFlutter File View Plugin Ġ: ĠFlutter Plugin , ĠMethod Call Handler , ĠActivity Aware Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġchannel : ĠMethod Channel ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ çĬ¶æĢģ åĢ¼ ĊĠĠĠ Ġvar Ġinit X 5 Status : ĠInt Ġ= ĠX 5 Status . INIT ĊĠĠĠ Ġprivate Ġvar Ġnow Down Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Flutter Plugin Binding : ĠFlutter Plugin Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠmContext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine ( flutter Plugin Binding : ĠFlutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchannel Ġ= ĠMethod Channel ( flutter Plugin Binding . binary Messenger , Ġchannel Name ) ĊĠĠĠĠĠĠĠ Ġchannel !!. set MethodCall Handler ( this ) ĊĠĠĠĠĠĠĠ Ġm Flutter Plugin Binding Ġ= Ġflutter Plugin Binding ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġm Flutter Plugin Binding !!. application Context ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" get Platform Version " Ġ-> Ġresult . success (" Android Ġ" Ġ+ ĠBuild . VERSION . RELEASE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" getX 5 Status " Ġ-> Ġresult . success ( x 5 Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" manual Init X 5 " Ġ-> Ġmanual Init X 5 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ ĠX 5 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit X 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler : ĠHandler Ġ= Ġobject Ġ: ĠHandler ( Looper . my Looper () !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispatch Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . dispatch Message ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel !!. invoke Method (" x 5 Status ", Ġx 5 Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhandle Message ( handler ) ĊĠĠĠĠĠĠĠ Ġif Ġ( mContext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" å¼Ģå§ĭ åĪĿå§ĭåĮĸ X 5 ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠæĽ´ æĶ¹ åĪĿå§ĭåĮĸ çĬ¶æĢģ ĊĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= ĠX 5 Status . INIT _ LOADING ĊĠĠĠĠĠĠĠ Ġhandle Message ( handler ) ĊĊĠĠĠĠĠĠĠ Ġ/// Ġä¸į èİ·åıĸ ĠAndroid ID ĊĠĠĠĠĠĠĠ ĠQ b Sdk . can Get Android Id ( false ) ĊĠĠĠĠĠĠĠ Ġ/// Ġä¸į èİ·åıĸ ĠI ME I ï¼Ī è®¾å¤ĩ è¯ĨåĪ« çłģ ï¼ī ĊĠĠĠĠĠĠĠ ĠQ b Sdk . can GetDevice Id ( false ) ĊĠĠĠĠĠĠĠ Ġ/// Ġä¸į èİ·åıĸ ĠIM SI ï¼Ī çĶ¨æĪ· è¯ĨåĪ« çłģ ï¼ī ĊĠĠĠĠĠĠĠ ĠQ b Sdk . can Get Subscriber Id ( false ) ĊĠĠĠĠĠĠĠ Ġreset Qb Sdk () ĊĊĠĠĠĠĠĠĠ Ġ// Ġåľ¨ è°ĥçĶ¨ T BS åĪĿå§ĭåĮĸ ãĢģ åĪĽå»º WebView ä¹ĭåīį è¿Ľè¡Į å¦Ĥä¸ĭ éħįç½® ï¼Į ä»¥ å¼ĢåĲ¯ ä¼ĺåĮĸ æĸ¹æ¡Ī ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [ T bs Core Settings . T BS _ SETTINGS _ USE _ SPEED Y _ CLASS LOAD ER ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġmap [ T bs Core Settings . T BS _ SETTINGS _ USE _ DEX LOAD ER _ SERVICE ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠQ b Sdk . init T bs Settings ( map ) ĊĠĠĠĠĠĠĠ ĠQ b Sdk . set Download Without Wifi ( true ) ĊĠĠĠĠĠĠĠ ĠQ b Sdk . set T bs Listener ( object Ġ: ĠT bs Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Download Finish ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= Ġif Ġ( i Ġ== Ġ 1 0 0 Ġ|| Ġi Ġ== Ġ 0 ) ĠX 5 Status . DOWNLOAD _ SUCCESS Ġelse ĠX 5 Status . DOWNLOAD _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Message ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" T BS ä¸ĭè½½ å®ĮæĪĲ Ġ- Ġ" Ġ+ Ġi Ġ+ Ġ" Ġ- Ġ" Ġ+ Ġshow Status ( i Ġ== Ġ 1 0 0 Ġ|| Ġi Ġ== Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( init X 5 Status Ġ== ĠX 5 Status . DOWNLOAD _ FAIL Ġ&& Ġnow Down Count Ġ<= Ġmax Down Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ä¸ĭè½½ å¤±è´¥ åĲİ ï¼Į å°Ŀè¯ķ éĩįæĸ° ä¸ĭè½½ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT bs Downloader . start Download ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnow Down Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Install Finish ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= Ġif Ġ( i Ġ== Ġ 2 0 0 ) ĠX 5 Status . INSTALL _ SUCCESS Ġelse ĠX 5 Status . INSTALL _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Message ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" T BS å®īè£ħ å®ĮæĪĲ Ġ- Ġ" Ġ+ Ġi Ġ+ Ġ" Ġ- Ġ" Ġ+ Ġshow Status ( i Ġ== Ġ 2 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Download Progress ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= Ġif Ġ( i Ġin Ġ 1 .. 1 0 0 ) ĠX 5 Status . DOWNLOAD _ LOADING Ġelse ĠX 5 Status . DOWNLOAD _ FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" T BS ä¸ĭè½½ è¿Ľ åº¦ :$ i ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġon Qb Sdk Pre Init Callback : ĠPre Init Callback Ġ= Ġobject Ġ: ĠPre Init Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Core Init Finished () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" T BS åĨħ æł¸ åĪĿå§ĭåĮĸ å®Į æ¯ķ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Init Finished ( b : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= Ġif Ġ( b ) ĠX 5 Status . SUCCESS Ġelse ĠX 5 Status . FAIL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Message ( handler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! b ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Qb Sdk () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" T BS åĨħ æł¸ åĪĿå§ĭåĮĸ " Ġ+ Ġshow Status ( b ) Ġ+ Ġ" Ġ- Ġ" Ġ+ ĠQ b Sdk . can Load X 5 ( mContext )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠX 5 åĨħ æł¸ åĪĿå§ĭåĮĸ ĊĠĠĠĠĠĠĠ ĠQ b Sdk . init X 5 Environment ( mContext , Ġon Qb Sdk Pre Init Callback ) ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" app æĺ¯åĲ¦ ä¸» åĬ¨ ç¦ģ çĶ¨ äºĨ X 5 åĨħ æł¸ : Ġ" Ġ+ ĠQ b Sdk . getIs Sys WebView For ced By Outer ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åıĳéĢģ æ¶Īæģ¯ ï¼Į ä¸»è¦ģ çĶ¨äºİ åľ¨ åħ¶ä»ĸ çº¿ç¨ĭ æĹ¶ åı¯ä»¥åľ¨ ä¸» çº¿ç¨ĭ åıĳéĢģ æ¶Īæģ¯ ç»Ļ Flutter ĊĠĠĠĠ Ġ* Ġ å®ŀçİ° X 5 åĨħ æł¸ åĪĿå§ĭåĮĸ çĽĳåĲ¬ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġhandle Message ( handler : ĠHandler ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġhandler . obtain Message () ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage ( message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĺ¾ç¤º Ġ çĬ¶æĢģ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġflag ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Status ( flag : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( flag ) Ġ" æĪĲåĬŁ " Ġelse Ġ" å¤±è´¥ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĩį ç½® ĠQ b Sdk ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreset Qb Sdk () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit X 5 Status Ġ= Ġif Ġ( mContext Ġ!= Ġnull Ġ&& Ġ! Qb Sdk . can Load X 5 ( mContext )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĩį ç½® ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ b Sdk . reset ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX 5 Status . INIT ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX 5 Status . SUCCESS ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ X 5 åĪĿå§ĭåĮĸ çĬ¶æĢģ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġx 5 Status : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" èİ·åıĸ åĨħ æł¸ åĬłè½½ çĬ¶æĢģ Ġ- Ġ$ init X 5 Status ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinit X 5 Status ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ ĠX 5 åĨħ æł¸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmanual Init X 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mContext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æŃ£åľ¨ åĪĿå§ĭåĮĸ Ġ/ Ġ åĨħ æł¸ åĬłè½½ å®ĮæĪĲ Ġ/ Ġ ä¸ĭè½½ å®ĮæĪĲ Ġ/ Ġ æŃ£åľ¨ ä¸ĭè½½ Ġ/ Ġ åħ¶ä»ĸ çĬ¶æĢģ ï¼Į æĹł é¡» éĩįå¤į æĵįä½ľ ĊĠĠĠĠĠĠĠ Ġ// Ġ ä»ħ å¤ĦçĲĨ Ġ æľª åĪĿå§ĭåĮĸ Ġ/ ĠåĪĿå§ĭåĮĸ å¤±è´¥ Ġ/ Ġ ä¸ĭè½½ å¤±è´¥ ĠçļĦ æĥħåĨµ ĊĠĠĠĠĠĠĠ Ġif Ġ( init X 5 Status Ġ== ĠX 5 Status . INIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( init X 5 Status Ġ== ĠX 5 Status . FAIL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Qb Sdk . can Load X 5 ( mContext )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit X 5 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( init X 5 Status Ġ== ĠX 5 Status . DOWNLOAD _ FAIL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT bs Downloader . start Download ( mContext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine ( binding : ĠFlutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġæ¸ ħ ç©º æķ°æį® ĊĠĠĠĠĠĠĠ Ġchannel !!. set MethodCall Handler ( null ) ĊĠĠĠĠĠĠĠ Ġm Flutter Plugin Binding Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠmContext Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Attached To Activity ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠApp åĲ¯åĬ¨ æĹ¶ ï¼Į å¼Ģå§ĭ åĪĿå§ĭåĮĸ X 5 åĨħ æł¸ ĊĠĠĠĠĠĠĠ Ġinit X 5 () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĽł T bs Reader View éĹ®é¢ĺ ï¼Į æķħ åľ¨ æŃ¤ æ³¨åĨĮ ĊĠĠĠĠĠĠĠ Ġm Flutter Plugin Binding !!. platform View Registry . register View Factory ( view Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Local View Factory ( m Flutter Plugin Binding !!. binary Messenger , Ġbinding . activity )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Detached From Activity For Config Changes ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Re attached To Activity For Config Changes ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" on Detached From Activity ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG : ĠString Ġ= ĠFlutter File View Plugin :: class . java . name ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å°Ŀè¯ķ éĩįæĸ° ä¸ĭè½½ çļĦ æ¬¡æķ° ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval Ġmax Down Count Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġchannel Name Ġ= Ġ" flutter _ file _ view . io . method " ĊĠĠĠĠĠĠĠ Ġconst Ġval Ġview Name Ġ= Ġ" plugins . file _ local _ view / view " ĊĠĠĠ Ġ} Ċ } ĊĊ