java - Android 运行时权限不断被拒绝

标签 java android permissions runtime

我正在尝试为我的 Android 应用程序请求运行时权限。这是我的代码:

private static final int PERMISSION_REQUEST_CODE = 1;
String installPermission = Manifest.permission.INSTALL_PACKAGES;
String writePermission = Manifest.permission.WRITE_EXTERNAL_STORAGE;

@Click(R.id.buttonVersionUpgrade)
void buttonVersionUpgradeClicked(View v) {
    if (!checkPermission(installPermission)) {
        requestPermission(installPermission);
    }
    if (!checkPermission(writePermission)) {
        requestPermission(writePermission);
    }
}

private boolean checkPermission(String permission){
    if (Build.VERSION.SDK_INT >= 23) {
        int result = ContextCompat.checkSelfPermission(getApplicationContext(), permission);
        if (result == PackageManager.PERMISSION_GRANTED){
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}

private void requestPermission(String permission){
    if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)){
        Toast.makeText(getApplicationContext(), "Permission required for features to work.",Toast.LENGTH_LONG).show();
    }
    ActivityCompat.requestPermissions(this, new String[]{permission},PERMISSION_REQUEST_CODE);
}

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(getApplicationContext(), "Permission Granted.",
                        Toast.LENGTH_LONG).show();
            } else {
                Toast.makeText(getApplicationContext(),"Permission Denied.",
                        Toast.LENGTH_LONG).show();
            }
            break;
    }
}

在我的 AndroidManifest.xml 中:

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

但是,上面的代码一直显示权限被拒绝,而没有提示用户授予权限。有什么想法吗?

谢谢!

最佳答案

我的 list 中有错误:

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

WRITE_EXTERNAL_STORAGE”之后有空间。我删除了它,现在一切正常了。

关于java - Android 运行时权限不断被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789303/

相关文章:

java.lang.ClassNotFoundException : dalvik. 系统.BaseDexClassLoader.findClass

android - 如何像在 Android Market 应用程序中一样创建进度指示器?

android - Android 中的键盘 View

java - 从同一个ArrayList中过滤出不同的ListView

android - ContentProvider android权限

python - Django 如何定义权限以便用户只能编辑某些模型层次结构?

java - 如何在 Java 中命名导入/导出包?

java - Netbeans 8.0.2安装 native 库错误

java - jooq 代码生成 mysql 远程数据库 maven

mysql - mysql设置权限