【Android】外部SDカードの権限取得で「今後表示しない」を入れられてしまったら

公開 2019-10-13 / 最終更新 2021-05-05 12:07
カテゴリー Androidアプリ

皆さん、こんにちは。

今回は、外部の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ライフを。

タグ:
androidプログラミング
kotlin
コメント
コメントする

※ニックネームの変更はCookieを削除することで行えます。(ただし、過去に書き込んだコメントの編集・削除はできなくなります。)

コメント本文

※reCAPTCHAによるボット判定を行っているため、送信に少々時間がかかる場合があります。ご了承ください。

送信しました。

確認

コメントを削除しますか?

返信

返信を入力

arrow_upward