早上好
我正在寻找一种方法,以了解给定软件包名称的应用程序是否请求特定许可,以及该许可是否被授予(通过设置)。我正在寻找类似的东西:
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,但是它没有找到一种方法来知道某个应用程序是否实际上在请求某个权限以及是否被授予该权限。
预先感谢
致谢
答案 0 :(得分:1)
我创建了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();
}
<uses-permission android:name="android.permission.GET_TASKS"/>
来源和更多答案here