java - ANDROID:权限请求代码未出现

标签 java android permissions android-6.0-marshmallow

我确信这有一个非常简单的解释,但它让我感到困惑。随着 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/

相关文章:

java - 在java中填充数组

java - mvn clean verify 集成测试失败 : No qualifying bean of type

android - 使用 Retrofit 发布 soap xml 请求

android - 将 Firebase Firestore 和 Firebase Storage 调用合并到一个批处理中?

android - 如何使用系统权限编译 Android 应用程序

java - 如何使用 XStream 为 java.lang.Integer 别名?

java - JAX-RS + EJB,ejb 内的 SecurityContext 为 null,在 WildFly 10.1 上

android - 使用android从mysql检查值

python - PermissionError Errno 13 权限被拒绝

javascript - Facebook Javascript SDK 重新请求权限不提示