皆さん、こんにちは。
今回は、外部のSDカードへのアクセス権取得画面で、「今後表示しない」にチェックを入れられてしまったとき、どうすればいいか解説します。
先に断っておきますが、**この方法は一部の端末でしかできません。**Galaxy S9の最新版ではできることを確認していますが、できない端末が大半かもしれません。その時は、データを削除させるしかないと思います。
それでは、解説します。
ある日、設定画面を漁ってたらこんな物を見つけてしまいました。
タップするとアプリが並んでいて、適当にタップすると中にはなんと
こんなのがありました。今まではデータを削除させるしか、「今後表示しない」にチェックを入れられてしまったときはなかったので、これで勝ったと思いました。
このActivityはどうやって表示させるのか、QuickShortcutMakerで調べてみると、どうやら以下のクラスで起動できるらしい。
com.android.settings.Settings$DirectoryAccessSettingsActivity
なので、Intentを作り、startActivityします。
Intent().apply {
setClassName("com.android.settings", "com.android.settings.Settings\$DirectoryAccessSettingsActivity")
}
ただ、これだと起動できない端末が大半なので、クラスが存在するかチェックする処理をはさみます。存在しない場合はおとなしくデータ削除させます。
val isLaunchable = try {
packageManager.getActivityInfo(ComponentName("com.android.settings", "com.android.settings.Settings\$DirectoryAccessSettingsActivity"), 0)
true
} catch (e: PackageManager.NameNotFoundException) {
false
}
val intent = if (isLaunchable) {
Intent().apply {
setClassName("com.android.settings", "com.android.settings.Settings\$DirectoryAccessSettingsActivity")
}
} else {
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
val uri = Uri.fromParts("package", packageName, null)
this.data = uri
}
}
startActivity(intent)
あとはその旨をユーザーに知らせればOK!
それでは、よいAndroidライフを。