package Ġcom . w rist key Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Color State List Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment . get External Storage Directory Ċ import Ġandroid . os . V ibr ator Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . we ar . widget . Box In setLayout Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . w rist key . databinding . Activity W rist key Import Binding Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONException Ċ import Ġjava . io . File Ċ import Ġjava . io . FileReader Ċ import Ġjava . util .* Ċ Ċ class ĠW rist key Import Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity W rist key Import Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity W rist key Import Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġval Ġbox in set layout Ġ= ĠfindViewById < Box In setLayout >( R . id . Box In setLayout ) ĊĠĠĠĠĠĠĠ Ġval Ġback Button Ġ= ĠfindViewById < Image Button >( R . id . Back Button ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Button Ġ= ĠfindViewById < Image Button >( R . id . Confirm Button ) ĊĠĠĠĠĠĠĠ Ġval Ġimport Label Ġ= ĠfindViewById < TextView >( R . id . Import Label ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĠfindViewById < TextView >( R . id . Description ) ĊĠĠĠĠĠĠĠ Ġvar Ġtheme Ġ= Ġ" Dark " ĊĠĠĠĠĠĠĠ Ġvar Ġaccent Ġ= Ġ" Blue " ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Accent Ġ= Ġapp Data . getString (" accent ", Ġ" 4 2 8 5 F 4 ") ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent Theme Ġ= Ġapp Data . getString (" theme ", Ġ" 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġbox in set layout . set BackgroundColor ( Color . parse Color ("# "+ current Theme )) ĊĠĠĠĠĠĠĠ Ġconfirm Button . background Tint List Ġ= ĠColor State List . valueOf ( Color . parse Color ("# "+ current Accent )) ĊĠĠĠĠĠĠĠ Ġif Ġ( current Theme Ġ== Ġ" F 7 F 7 F 7 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Label . setTextColor ( Color State List . valueOf ( Color . parse Color ("# 0 0 0 0 0 0 "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . setTextColor ( Color State List . valueOf ( Color . parse Color ("# 0 0 0 0 0 0 "))) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Label . setTextColor ( Color State List . valueOf ( Color . parse Color ("# B DB DB D "))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription . setTextColor ( Color State List . valueOf ( Color . parse Color ("# FFFFFF "))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠAdd Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ator Service Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconfirm Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ator Service Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 5 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiles : ĠArray < File > Ġ= Ġget External Storage Directory (). list Files () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstart Ġimport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . name . endsWith (". backup ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠFileReader ( file . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Data Ġ= Ġreader . read Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems Array Ġ= ĠJSONArray ( json Data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . import _ loading _ screen ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloading Layout Ġ= ĠfindViewById < Box In setLayout >( R . id . Loading Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloading Icon Ġ= ĠfindViewById < ProgressBar >( R . id . Loading Icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimporting Label Ġ= ĠfindViewById < TextView >( R . id . Import ing Label ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimporting Description Ġ= ĠfindViewById < TextView >( R . id . Import ing Description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Layout . set BackgroundColor ( Color . parse Color ("# "+ current Theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Icon . progress Tint List Ġ= ĠColor State List . valueOf ( Color . parse Color ("# " Ġ+ Ġcurrent Accent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Icon . background Tint List Ġ= ĠColor State List . valueOf ( Color . parse Color ("# " Ġ+ Ġcurrent Theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Theme Ġ== Ġ" F 7 F 7 F 7 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Label . setTextColor ( Color State List . valueOf ( Color . parse Color ("# 0 0 0 0 0 0 "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . setTextColor ( Color State List . valueOf ( Color . parse Color ("# 0 0 0 0 0 0 "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Label . setTextColor ( Color State List . valueOf ( Color . parse Color ("# B DB DB D "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . setTextColor ( Color State List . valueOf ( Color . parse Color ("# FFFFFF "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// found Ġx Ġnumber Ġof Ġitems ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . text Ġ= Ġ" Found Ġ${ items Array . length ()} Ġitems " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Index Ġin Ġ 0 Ġuntil Ġitems Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems Array [ item Index ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠJSONArray ( item )[ 0 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtot p Secret Ġ= ĠJSONArray ( item )[ 1 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmode Ġ= ĠJSONArray ( item )[ 2 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdigits Ġ= ĠJSONArray ( item )[ 3 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalgorithm Ġ= ĠJSONArray ( item )[ 4 ]. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Ġ= ĠJSONArray ( item )[ 5 ]. toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tot p Secret . isNotEmpty ()) Ġ{ Ġ// Ġbegin Ġstoring Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . text Ġ= Ġ" Adding Ġ$ name " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Data Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( tot p Secret ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( digits ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( algorithm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Data . add ( counter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠGson (). toJson ( account Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccounts . edit (). putString ( id , Ġjson ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . text Ġ= Ġ" No ĠT OTP Ġsecret Ġfor Ġ$ name " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( no Data : ĠJSON Exception ) Ġ{ Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimporting Description . text Ġ= Ġ" Saving Ġdata " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" Imported Ġaccounts Ġsuccessfully !", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ator Service Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( no File Found : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" Couldn 't Ġfind Ġfile . ĠCheck Ġif Ġthe Ġfile Ġexists Ġand Ġif ĠW rist key Ġis Ġgranted Ġstorage Ġpermission .", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Intent Ġ= ĠIntent ( Settings . ACTION _ APPLICATION _ DETAILS _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri Ġ= ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings Intent . data Ġ= Ġuri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( settings Intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvi br ator Service Ġ= Ġget System Service ( Context . V IB R ATOR _ SERVICE ) Ġas ĠV ibr ator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvi br ator Service . vi br ate ( 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġstop Ġimport ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }