我确信这有一个非常简单的解释,但它让我感到困惑。随着 API 23 的新更新,您必须在 list 和实际代码中声明权限。然而我想要做的事情的请求代码没有出现。
这是我的 list :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ryanfolz.textscrabble">
<uses-permission android:name="android.permission.READ_SMS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
在我的第一个 Activity 中,我调用此方法:
if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS")
== PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);
}
但是,“REQUEST_CODE_ASK_PERMISSIONS”不链接到任何数值。事实上,自动完成中也没有出现请求代码。
有谁知道为什么此代码不出现以及如何修复它?
最佳答案
您必须为 REQUEST_CODE_ASK_PERMISSIONS
分配任意值。您应该将 REQUEST_CODE_ASK_PERMISSIONS
声明为具有任意数值的常量,例如
公共(public)最终 int REQUEST_CODE_ASK_PERMISSIONS = 1001;
此值用于了解允许哪些权限并在 onRequestPermissionsResult
中进行管理。即,您在同一 Activity 中的两种不同情况下请求权限,并且您只有一个 onRequestPermissionsResult
方法。因此,您必须区分 onRequestPermissionsResult
中捕获了哪个结果。
因此,如果您有两个请求,例如 SMS 和 WAKE_LOCK,则您将使用两个请求代码进行请求,例如:
public final int REQUEST_CODE_SMS_PERMISSIONS = 1001;
public final int REQUEST_CODE_WAKELOCK_PERMISSIONS = 1002;
这样您就可以像这样管理onRequestPermissionsResult
中的结果
@Override
public void onRequestPermissionsResult(final int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch(requestCode){
case REQUEST_CODE_SMS_PERMISSIONS:
//Code for handling SMS Permission results
break;
case REQUEST_CODE_WAKELOCK_PERMISSIONS:
//Code for handling WAKE_LOCK Permission results
break;
}
}
关于java - ANDROID:权限请求代码未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36653494/