java - 以编程方式从 android 中的 manifest.xml 中检索权限

标签 java android permissions android-manifest

我必须以编程方式从 Android 应用程序的 manifest.xml 中检索权限,但我不知道该怎么做。

我读了the post here但我对答案并不完全满意。 我想 android API 中应该有一个类允许从 list 中检索信息。

谢谢。

最佳答案

您可以使用 PackageManager 获取应用程序请求的权限(它们可能未被授予):

PackageInfo info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
String[] permissions = info.requestedPermissions;//This array contains the requested permissions.

我在实用方法中使用它来检查是否声明了预期的权限:

//for example, permission can be "android.permission.WRITE_EXTERNAL_STORAGE"
public boolean hasPermission(String permission) 
{
    try {
        PackageInfo info = getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
        if (info.requestedPermissions != null) {
            for (String p : info.requestedPermissions) {
                if (p.equals(permission)) {
                    return true;
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

关于java - 以编程方式从 android 中的 manifest.xml 中检索权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18236801/

相关文章:

java - 为什么我获得拒绝连接到端口 338 的权限?

java - 同一应用程序中不同 Activity 之间的共享首选项

java 2d净重力计算

java - 为什么读取文件名中包含 ':' 的测试资源会导致 NPE?

java - 我的 Android 应用程序在模拟器上运行但无法在我的 Android 设备上运行

java - 如何解决android中CheckBoxPreference默认值的错误?

android - 在flutter应用程序中获得互联网许可

java - 在 REST API 的 java 中使用 HttpURLConnection 进行 POST 时,响应代码为 400

Android - WrapText in Edittext 的问题

shell - 如何获取错误输出并将其存储在变量或文件中