早上好
我正在寻找一种方法来了解给定包名称的应用程序是否请求特定权限以及是否授予该权限(通过设置)。我一直在寻找类似的东西:
if(//com.package.name requests Manifest.permission.camera and that permission is granted)
{//do something}
我已经读过这个帖子 http://stackoverflow.com/questions/31535088/android-m-programmatically-revoke-permissions但它无法找到一种方法来了解某个应用程序是否真的在请求特定权限以及是否已被授予。
提前致谢
问候
最佳答案
在您的 Activity 中使用以下代码:
我创建了 StringBuffer appNameAndPermissions = new StringBuffer();
附加所有应用程序和权限信息。
它工作正常。我已经测试过了。如果您有任何问题,请告诉我。
StringBuffer appNameAndPermissions = new StringBuffer();
PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo applicationInfo : packages) {
Log.d("test", "App: " + applicationInfo.name + " Package: " + applicationInfo.packageName);
try {
PackageInfo packageInfo = pm.getPackageInfo(applicationInfo.packageName, PackageManager.GET_PERMISSIONS);
appNameAndPermissions.append(packageInfo.packageName+"*******:\n");
//Get Permissions
String[] requestedPermissions = packageInfo.requestedPermissions;
if(requestedPermissions != null) {
for (int i = 0; i < requestedPermissions.length; i++) {
Log.d("test", requestedPermissions[i]);
appNameAndPermissions.append(requestedPermissions[i]+"\n");
}
appNameAndPermissions.append("\n");
} catch (NameNotFoundException e) {
e.printStackTrace();
}
在您的 AndroidManifest.xml 文件中使用以下权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
来源及更多答案 here
关于java - 如果应用程序请求权限,如何获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54956673/