当前位置: 首页 > 知识库问答 >
问题:

Android运行时权限不断被拒绝

农飞翔
2023-03-14

我正在尝试为我的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" />

但是,上面的代码始终显示权限被拒绝,而不提示用户请求权限。有什么想法吗?

谢谢

共有2个答案

汪建德
2023-03-14

首先,if(Build.VERSION.SDK\u INT

但是,上面的代码始终显示权限被拒绝,而不提示用户请求权限。

这是因为,android.permission.INSTALL_PACKAGES

如果您只请求android.permission.WRITE_EXTERNAL_STORAGE,那么您应该会看到正确的权限对话框。

权限请求显示为保护级别为危险的权限。您可以参考此文档来确定保护级别。有关权限级别和类型的更多详细信息,请参阅此权限概述文档

高修筠
2023-03-14

我有一个清单错误:

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

“WRITE\u EXTERNAL\u STORAGE”(写入外部存储)之后有空格。我把它删除了,现在一切都好了。

 类似资料:
  • 我添加了使用权限,包括WRITE_EXTERNAL_STORAGE,android.permission.相机,READ_EXTERNAL_STORAGEAndroidManifest.xml. 当我在Nexus6(API 24)中运行我的应用程序时,它向我抛出了以下错误: java.io.IOException:权限被拒绝 这是我的代码: 如何在权限相机运行时打开之前使用它?

  • 我有一个从Ubuntu软件应用程序安装的IntelliJ IDEA Ultimate 2022.1.2。它被配置为使用Maven包装器。当我在java项目上执行“安装”时(从生命周期菜单),我得到两个错误: git测试: 协议测试: maven-wrapper.properties: 同样的项目在不同的机器上运行良好。不能解决问题。

  • 在android studio中运行应用程序时,我遇到了权限被拒绝的问题。在此之前,我需要声明,我的队友可以运行代码并弹出数据,但我,我们都使用相同的代码和版本,但我使用的是mac,他们使用的是win系统。 以下是logcat信息: 下面是AndroidMainfest文件:For tools sLtaretApi="31"我尝试删除并运行没有任何更改 有人能给我一些解决这个问题的建议吗?感谢任何

  • 问题内容: 通过Flask / Python运行Selenium时收到以下错误 该功能是 如果直接进入应用程序目录并运行脚本(),则不会收到该错误。 基于此,通过Flask运行时,日志文件似乎不可写,但该文件应位于何处? 可执行文件安装在 问题答案: 这些错误为我们提供了一些有关发生了什么错误的提示,如下所示: 按照源代码中的 GeckoDriver 得到了两个默认参数发起和如下: 您的程序在这里

  • 我正在使用Docker Compose运行多个容器,包括一个带有Postgres映像的容器。我正在尝试向该容器添加一个卷,以跨容器构建持久化我的数据。但是,当它尝试在容器中为该卷创建目录时,我收到了一个错误。 我运行: 然后 docker compose up 我收到以下错误: 错误:对于cxbenchmark\u db\u 1,无法启动服务db:oci运行时错误:container\u linu

  • 我正在Android 5.1.1上测试一个应用程序,其中存储权限被自动拒绝。当我启动应用程序时,没有提示向应用程序授予权限。但是,当我使用新的Android权限模型在Android 6.0及更高版本上测试该应用程序时,一切正常。如何正确设置权限,并在android 5.0及更低版本上启动应用程序时获得权限对话框提示?