2016-11-06 15 views
1

Android 7のtargetSdkVersion 24のアプリで、Androidの許可WRITE_EXTERNAL_STORAGEをリクエストしようとしています。しかし、私がこのアプリケーションを実行すると、このアクセス許可は私には聞かれることはありません。私のデバイスでは、設定>アプリケーション> MyApp>権限に移動しますが、WRITE_EXTERNAL_STORAGEに関するものは表示されません。Androidの許可のプロンプトまたはトグル

私はどこかのステップを逃しましたか?

のAndroidManifest.xml(完全なファイルon pastebin

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

がMyActivity.java

int permission = activity.checkSelfPermission(perm); 
if (permission != PackageManager.PERMISSION_GRANTED) 
    activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
+0

あなたの 'targetSdkVersion'とは何ですか?また、マニフェスト全体を投稿して、 'がどこにあるのかを表示することもできます。 – CommonsWare

+0

@CommonsWare:ありがとう。私はマニフェスト全体へのリンクを追加しました。そして、 'targetSdkVersion'は24です。 – JellicleCat

+1

Android 6.0+ランタイムパーミッションはSettings> Apps>(あなたのアプリ)> Permissionsにあります。 – CommonsWare

答えて

0

調査するいくつかの時間を過ごした後、私はこの問題に関する理論を開発しました。

私のアプリは自分のAndroidManifest.xmlでこれを持っているいくつかの依存関係があります。

<uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 

これはありませんがSDKは私が取得しています問題に一貫性のある18以上である場合には自動WRITE_EXTERNAL_STORAGE権限を拒否しています。許可が拒否され、ユーザーにも表示されません。

android:maxSdkVersion="25" 

それは、その後masSdkVersion上の競合をマージするため、ビルドに失敗します。

それから私は、libに依存許可設定を上書きしようとする試みに私のアプリのAndroidManifest.xmlにこれを追加するテスト。これは私の疑惑をさらに確認するものです。 android:maxSdkVersionがAppモジュールに伝播しました。

ドキュメントを掘り下げた後、私は解決策を見つけることができませんが、回避策があります。 READ_EXTERNAL_STORAGEはWRITE_EXTERNAL_STORAGEと同じグループに属しており、同じグループのアクセス許可を求めると、グループ全体の残りのアクセス許可に適用されます。

私はAppとAndroidManifest.xmlを通してREAD権限を求めてテストしましたが、うまくいきましたが、それは馬鹿だと思います。

解決方法が見つかったら更新します。

関連する問題