package Ġcom . fal dez . sh ach i . ui . settings Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Media Store Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . preference . Preference Ċ import Ġandroidx . preference . Preference Fragment Compat Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . fal dez . sh ach i . MainActivity Ċ import Ġcom . fal dez . sh ach i . R Ċ import Ġcom . fal dez . sh ach i . data . preference . Sh ach i Preference Ċ Ċ class ĠRoot Settings Fragment Ġ: ĠPreference Fragment Compat (), ĊĠĠĠ ĠSharedPreferences . On Shared Preference ChangeListener Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġdownload Path Picker Ġ= ĊĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Open Document Tree ()) Ġ{ Ġuri Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Context (). content Resolver . take Persist able Uri Permission ( uri , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . FLAG _ GRANT _ READ _ URI _ PERMISSION Ġor ĠIntent . FLAG _ GRANT _ WRITE _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( require Context ()). edit ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Sh ach i Preference . KEY _ DOWNLOAD _ PATH , Ġuri . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Preferences ( savedInstanceState : ĠBundle ?, Ġroot Key : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Preferences From Resource ( R . xml . root _ preferences , Ġroot Key ) ĊĠĠĠĠĠĠĠ Ġfind Preference < Preference >( Sh ach i Preference . KEY _ DOWNLOAD _ PATH )?. setOn Preference ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Path Picker . launch ( Media Store . Images . Media . getContent Uri (" external ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġpreference Screen . shared Preferences ?. register On Shared Preference ChangeListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġfind Preference < Preference >( Sh ach i Preference . KEY _ DOWNLOAD _ PATH )?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences ?. getString ( Sh ach i Preference . KEY _ DOWNLOAD _ PATH , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠUri . parse ( it ) Ġ} ?. last Path Segment ?. substring After (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġresources . getString ( R . string . not _ set _ message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġpreference Screen . shared Preferences ?. unregister On Shared Preference ChangeListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Shared Preference Changed ( shared Preferences : ĠSharedPreferences ?, Ġkey : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSh ach i Preference . KEY _ THEME Ġ-> Ġ( activity Ġas ĠMainActivity ). set Theme () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSh ach i Preference . KEY _ SEND _ CR ASH _ REPORT S Ġ-> Ġ( activity Ġas ĠMainActivity ). set Send Crash Reports () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }