web-dev-qa-db-ja.com

Android MのEXTERNAL_STORAGEに必要な権限を付与しますか?

Android権限WRITE_EXTERNAL_STORAGEおよびREAD_EXTERNAL_STORAGE新しい許可を与えるダイアログをトリガーAndroid M?

9
Matt

私はギヨーム・ペロットの答えに同意します。 READ_WRITE_EXTERNAL_STORAGEAndroidManifest.xmlの許可を書き込むと、同様の質問に会いました

デフォルトではアプリに表示される権限がないため、アプリの権限でストレージのトグルボタンを切り替える必要があります。次に、build.gradletargetSdkVersion23(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未満なので、ギヨームペロットの回答に投票できません。この方法を使用して、自分のアイデアを示してください。

10
Elf Xu

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);
            }
7
Samuel Ivan

私の答えは、エミュレーターを使用した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未満であった以前のインストールからデバイス上のアプリをアップグレードします。

それ以外の場合は、デフォルトでトグルがオフとして表示されます。

それが役に立てば幸い。

2

Android docs によると、外部ストレージの読み取りと書き込みに関する許可を要求する必要はありません。

編集:最新のAndroid Mリリースでは、読み取りと書き込みの両方の権限を要求する必要があります

0
greywolf82

ストレージのアクセス許可は危険な保護レベルに該当するため、Android M、アプリターゲットSDKが23に設定されている場合、Mではインストール時にすべての危険な保護レベルのアクセス許可は付与されません。実行時に付与されます。そして、はい、これらの権限は実行時にも取り消すことができます。

権限ダイアログは自動的にトリガーされません。ネイティブダイアログを表示するには、requestPermissions()メソッドなどのAPIを使用してリクエストを行う必要があります。

危険レベル許可リストをチェックしてください ここ

0
dex

ドキュメントによると:

インストール時に付与される制限された権限:ユーザーがアプリをインストールまたは更新すると、システムは、PROTECTION_NORMALに該当する、アプリが要求するすべての権限をアプリに付与します。

したがって、READ_EXTERNAL_STORAGEはPROTECTION_NORMALの下にあるため、ダイアログはトリガーされません。

しかし、WRITE_EXTERNAL_STORAGEのレベルはPROTECTION_DANGEROUSであるため、ドキュメントで説明されているように、この動作に該当します。

ユーザーが実行時に権限を付与する:アプリが権限をリクエストすると、システムはユーザーにダイアログを表示し、アプリのコールバック関数を呼び出して、権限が付与されたかどうかを通知します。ユーザーが権限を付与すると、アプリには、アプリのマニフェストで宣言された、その権限の機能領域内のすべての権限が付与されます

保護レベルのソースは次のとおりです。

詳細リスト

0
yshahak