以编程方式获取权限详细信息

7

Android SDK中是否提供了特定权限的信息?例如,当您单击某个权限时,Google Play会显示该权限是用于什么目的。我有一个函数可以返回应用程序的特定权限。

public static List<String> getAppPermissions(Context context, String packageName) {
    try {
        PackageInfo info = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_PERMISSIONS);
        return Arrays.asList(info.requestedPermissions);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return new ArrayList<>();
    }
} 

通过这段代码,我只能获取到权限名称,但我想知道是否有任何API可以返回权限及其详细信息。

2
这可能会回答你的问题:https://dev59.com/iWvXa4cB1Zd3GeqPGzaR - Markus Marvell
@Markus Marvell 不,那并没有帮助。那只会告诉你权限级别。 - Kosh
1
请从PermissionInfo类中获取标签、描述、图标等所有信息。您可以在此链接中找到更多详细信息:http://developer.android.com/reference/android/content/pm/PermissionInfo.html - Markus Marvell
@Markus Marvell,肯定会的,我只是好奇为什么以前从来没有注意过那个类。我会在周末试一试,看看它的工作效果如何。谢谢伙计,感谢你的帮助。 - Kosh
1个回答

2
为了回答您的问题,PermissionInfo 实际上是获取任何 Android 权限描述的正确 class,例如:android permission
@Nullable
public static PermissionInfo getPermissionInfo(@NonNull Context context, @NonNull String permission) {
    try {
        return context.getPackageManager().getPermissionInfo(permission, PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

上述方法将返回PermissionInfo实例,如果它能够解析给定的permission名称,然后您可以简单地调用loadDescription来加载permission描述。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接