Androidアプリケーションの主要なアクティビティでは、アクセス許可(Manifest.permission.MANAGE_DOCUMENTS
)を確認していません。それらを持っていないことを検出し、requestPermisions
に電話してください。 次に、onRequestPermissionResult
で、すぐにダイアログが表示されることなく、私はすぐに許可を拒否されます。MainActivityのrequestPermissionから自動的にAndroidのアクセス許可が拒否されました
私はすでにので、私は(セッションのために、または何でも)、この決定が保存されると予想され、私が選択したことがない、(作品再びrequestPermissions
を通じて、)同じアプリの別のアクティビティで同じ権限を確認しました許可を拒否するどちらの方法でも、権限ダイアログは表示されず、権限は自動的に拒否されます。
これまでAndroid 7と6(API 24と23)のエミュレータでこれをテストしました。
- アプリのデータ・キャッシュをクリアし、デバイスを拭くので、 間違い
- ないこのGetting permission denied on Android M
- トリプルチェックを綴りこのonRequestPermissionsResult returns immediately with denied permissionを見た後、新鮮だと私は呼び出しています:
私が試してみましたスーパーメソッド
- スタックオーバーフローに関する他の提案の束
私はかなり困惑...ここ
は、許可要求(コード内のコメントを参照してください):
private fun askForPermissionOrSendRequest(view: View, permission: String) {
if (checkSelfPermission(permission) == PackageManager.PERMISSION_DENIED) {
if (shouldShowRequestPermissionRationale(permission)) {
cachedView = view
val explanationDialog = AlertDialog.Builder(this).setMessage("We need permissions to read your storage in order to show your profile image.").setOnDismissListener {
requestPermissions(
arrayOf(permission),
BSMainActivity.permissionRequestSendProfilePic
)
}.create()
explanationDialog.show()
} else {
cachedView = view
// this branch is always hit - the permission seems to be missing every time
requestPermissions(
arrayOf(permission),
BSMainActivity.permissionRequestSendProfilePic
)
}
} else {
sendRequest(view)
}
}
私はすぐにアクセス権のために私に尋ねるまでを示すダイアログずに結果ハンドラを取得します。私は同じアプリの別の(子供の)活動で同じ許可を確認しているかもしれないし、そうでないかもしれない(違いはないようだ)。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.monomon.bs">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS"/>
しかし、その後のアプリは全く別の問題だろう 'intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)' – RecencyEffect
のように意図から選択したファイルを読み込むことになっていますか。 URIの読み取りアクセス権が与えられている場合は、[openInputStream](https://developer.android.com/reference/android/content/ContentResolver.html#openInputStream(android.net.Uri))を呼び出してアクセスできます選択されたファイルの内容 – ianhanniballake
私はインターネットの許可と同じ問題に直面しています...どうすればそれを処理できますか? @ianhanniballake –