Android権限WRITE_EXTERNAL_STORAGE
およびREAD_EXTERNAL_STORAGE
新しい許可を与えるダイアログをトリガーAndroid M?
私はギヨーム・ペロットの答えに同意します。 READ_WRITE_EXTERNAL_STORAGE
にAndroidManifest.xml
の許可を書き込むと、同様の質問に会いました
デフォルトではアプリに表示される権限がないため、アプリの権限でストレージのトグルボタンを切り替える必要があります。次に、build.gradle
のtargetSdkVersion
を23(MNC)
未満に変更しますsdkVersion
に関連するその他の番号、権限がインストールされているアプリ。
もう1つの方法は、許可が必要な場所にrequestpermission
関数を記述することです。コードは次のとおりです。
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)==
PackageManager.PERMISSION_GRANTED) {
//do the things} else {
requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
AnyNumber);
評判が15未満なので、ギヨームペロットの回答に投票できません。この方法を使用して、自分のアイデアを示してください。
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レベルをターゲットにしても、ユーザーはアクセス許可メニューで位置情報をオフにできます。
権限メニュー自体の場合、次の場合、権限切り替え状態はデフォルトでオンになります。
それ以外の場合は、デフォルトでトグルがオフとして表示されます。
それが役に立てば幸い。
Android docs によると、外部ストレージの読み取りと書き込みに関する許可を要求する必要はありません。
編集:最新のAndroid Mリリースでは、読み取りと書き込みの両方の権限を要求する必要があります
ストレージのアクセス許可は危険な保護レベルに該当するため、Android M、アプリターゲットSDKが23に設定されている場合、Mではインストール時にすべての危険な保護レベルのアクセス許可は付与されません。実行時に付与されます。そして、はい、これらの権限は実行時にも取り消すことができます。
権限ダイアログは自動的にトリガーされません。ネイティブダイアログを表示するには、requestPermissions()メソッドなどのAPIを使用してリクエストを行う必要があります。
危険レベル許可リストをチェックしてください ここ
ドキュメントによると:
インストール時に付与される制限された権限:ユーザーがアプリをインストールまたは更新すると、システムは、PROTECTION_NORMALに該当する、アプリが要求するすべての権限をアプリに付与します。
したがって、READ_EXTERNAL_STORAGEはPROTECTION_NORMALの下にあるため、ダイアログはトリガーされません。
しかし、WRITE_EXTERNAL_STORAGEのレベルはPROTECTION_DANGEROUSであるため、ドキュメントで説明されているように、この動作に該当します。
ユーザーが実行時に権限を付与する:アプリが権限をリクエストすると、システムはユーザーにダイアログを表示し、アプリのコールバック関数を呼び出して、権限が付与されたかどうかを通知します。ユーザーが権限を付与すると、アプリには、アプリのマニフェストで宣言された、その権限の機能領域内のすべての権限が付与されます
保護レベルのソースは次のとおりです。