package Ġcom . z wy . demo . views Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Bundle Ċ import Ġcom . z wy . demo . R Ċ import Ġcom . z wy . demo . base . Base Activity Ċ import Ġcom . z wy . demo . databinding . Main Layout Binding Ċ import Ġcom . z wy . demo . models . Main ViewModel Ċ import Ġd Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġjava . io . File Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity < Main Layout Binding , ĠMain ViewModel >() Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪĿå§ĭåĮĸ æł¹ å¸ĥå±Ģ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ å¸ĥå±Ģ layout çļĦ id ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġinit ContentView ( savedInstanceState : ĠBundle ?): ĠInt Ġ= ĠR . layout . activity _ main ĊĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . titles Ġ= ĠviewModel . titles ĊĠĠĠĠĠĠĠ ĠviewModel . getTitle s () Ċ // ĠĠĠĠĠĠĠ Ġcopy Assets File 2 Phone ( this ," ns fw . t flite ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġm Exit Time : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( System . currentTimeMillis () Ġ- Ġm Exit Time Ġ< Ġ 2 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed (); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Exit Time Ġ= ĠSystem . currentTimeMillis (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" åĨį æĮī ä¸Ģæ¬¡ è¿ĶåĽŀ éĶ® éĢĢåĩº åºĶçĶ¨ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* Ġå°Ĩ æĸĩä»¶ ä»İ assets çĽ®å½ķ ï¼Į èĢĥ è´Ŀ åĪ° Ġ/ data / data / åĮħ åĲį / files / Ġ çĽ®å½ķ ä¸Ń ãĢĤ assets Ġ çĽ®å½ķ ä¸ŃçļĦ æĸĩä»¶ ï¼Į ä¼ļ ä¸į ç»ı åİĭç¼© æīĵ åĮħ èĩ³ AP K åĮħ ä¸Ń ï¼Į ä½¿çĶ¨ æĹ¶ è¿ĺ åºĶ ä»İ apk åĮħ ä¸Ń å¯¼ åĩºæĿ¥ Ċ // ĠĠĠĠ Ġ* Ġ@ param ĠfileName Ġæĸĩä»¶ åĲį , å¦Ĥ aaa . txt Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġcopy Assets File 2 Phone ( activity : ĠActivity , ĠfileName : ĠString ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream : ĠInputStream Ġ= Ġactivity . assets . open ( fileName ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// get Files Dir () Ġ èİ·å¾Ĺ å½ĵåīį APP çļĦ å®īè£ħ è·¯å¾Ħ Ġ/ data / data / åĮħ åĲį / files Ġ çĽ®å½ķ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . files Dir . absolute Path Ġ+ ĠFile . separator . toString () Ġ+ ĠfileName Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists () Ġ|| Ġfile . length ()== 0 L ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf os Ġ= ĠFileOutputStream ( file ) Ġ// å¦Ĥæŀľ æĸĩä»¶ ä¸įåŃĺåľ¨ ï¼Į File OutputStream ä¼ļ èĩªåĬ¨ åĪĽå»º æĸĩä»¶ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlen Ġ= Ġ- 1 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( inputStream . read ( buffer ). also ({ Ġlen Ġ= Ġit Ġ}) Ġ!= Ġ- 1 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os . write ( buffer , Ġ 0 , Ġlen ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os . flush () Ġ// åĪ·æĸ° ç¼ĵåŃĺ åĮº Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . close () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf os . close () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" æ¨¡åŀĭ æĸĩä»¶ å¤įåĪ¶ å®Į æ¯ķ ". d () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" æ¨¡åŀĭ æĸĩä»¶ å·² åŃĺåľ¨ ï¼Į æĹł éľĢ å¤įåĪ¶ ". d () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊ Ċ } Ċ