![](/img/trans.png)
[英]Cannot resolve symbol ContextCompat.checkSelfPermission()
[英]ContextCompat.checkSelfPermission returns -1 despite WRITE_EXTERNAL_STORAGE granted
在電話設置中,授予權限。 搭載Android 8.0的手機。
compileSdkVersion 28
minSdkVersion 16
targetSdkVersion 28
清單具有:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在我的代碼中,此“ permissions”變量始終等於-1:
int permissions = ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);
從Android 6(API 23)開始,您還必須在運行時請求此權限。 該視頻可能會有所幫助: https : //youtu.be/WGz-alwVh8A
好的,感謝Larry Schiefer的運行時權限。
考慮到android docs:
我從鏈接2對該方法進行了一些更改。在執行某些操作之前,它會檢查權限,並在必要時要求用戶確認,在其他情況下,它會強制設置權限。
public void requestRuntimePermission(final Context context, final String manifestPermission, final int requestCode) {
int permissions = ContextCompat.checkSelfPermission(context, manifestPermission);
if (permissions != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context,
manifestPermission)) {
android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(context);
builder.setMessage("Allow access?")
.setCancelable(true)
//Cancel
.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
//Ok
.setPositiveButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
ActivityCompat.requestPermissions((Activity) context,
new String[]{manifestPermission},
requestCode);
}
});
android.support.v7.app.AlertDialog alert = builder.create();
alert.show();
} else {
// Permission has not been granted yet. Request it directly.
ActivityCompat.requestPermissions((Activity) context, new String[]{manifestPermission},
requestCode);
}
}
}
用法示例:
requestRuntimePermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE, 0);
requestRuntimePermission中的PS requestCode參數可用於標識onRequestPermissionsResult回調中允許的權限。 ( 鏈接3 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.