Android のアクセス許可は、Android Mの新しい許可WRITE_EXTERNAL_STORAGE
ダイアログをREAD_EXTERNAL_STORAGE
トリガーしますか?
6 に答える
Guillaume Perrot の回答に同意します。の許可を書いたときに、同様の質問に遭遇しREAD_WRITE_EXTERNAL_STORAGE
ましたAndroidManifest.xml
targetSdkVersion
デフォルトではアプリにアクセス許可が表示されbuild.gradle
ない23(MNC)
ため、ユーザーはアプリのアクセス許可でストレージのトグル ボタンを切り替える必要がありますsdkVersion
。
もう 1 つの方法はrequestpermission
、permisson が必要な場所に関数を記述することです。コードは次のとおりです。
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==
PackageManager.PERMISSION_GRANTED) {
//do the things} else {
requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
AnyNumber);
私の評判は 15 未満なので、Guillaume Perrot の回答に投票することはできません。この方法を使用して、私のアイデアを示してください。
Android Mのバージョンを確認する場合、これを追加して解決しました
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
}
私の答えは、エミュレーターを使用した M Preview SDK バージョン 2 でのテストに基づいています。
MNC
プレビュー API レベルを対象とする場合WRITE_EXTERNAL_STORAGE
、既定では付与されず、新しい動的アクセス許可 API の一部になります。
ストレージ権限は、デバイス設定の新しいアプリの権限メニューにトグル ボタンとしてActivity.requestPermissions
表示され、その権限のポップアップを表示するために使用できます。
ただし、API レベル < MNC をターゲットにすると、危険なパーミッションとして分類されないため、ユーザーが無効にする方法 (パーミッション設定に表示されない) なしで付与され、次のことができなくなります。プレビュー SDKでは新しい API の使用Activity.requestPermissions
が強制されるため、とにかく使用してコードをコンパイルします。minSdkVersion="MNC"
これは、位置情報のアクセス許可とは異なる動作です。ターゲットとする API レベルが何であれ、ユーザーはアクセス許可メニューで位置情報をオフにすることができます。
パーミッション メニュー自体については、次の場合、デフォルトでパーミッション トグル状態がオンになります。
- ターゲット API レベル < MNC。
- ターゲット API レベル = MNC ですが、ターゲット API レベルが MNC 未満であった以前のインストールからデバイス上のアプリをアップグレードします。
それ以外の場合、トグルはデフォルトでオフとして表示されます。
それが役に立てば幸い。
ストレージ パーミッションは危険な保護レベルに該当するため、アプリ ターゲット SDK が 23 に設定されている場合、すべての危険な保護レベルのパーミッションは Android M のインストール時に付与されません。それらは実行時に付与されます。はい、これらのアクセス許可は実行時にも取り消すことができます。
許可ダイアログは自動的にトリガーされません。そのネイティブ ダイアログを表示するには、requestPermissions() メソッドなどの API を使用して要求を行う必要があります。
危険レベル許可一覧はこちら