我们大家平时打开android程序管理的选项,可以看到一个程序的权限列表,内容详细。如下图所示:
我就想自习写程序得到一个程序的权限列表。
由于系统程序里实现了这个功能,系统源码肯定有这段代码。经过上网搜索,找到实现这个功能的方面类AppSecurityPermissions,大家可以在源码里找到这个java文件。我用两种方法实现了该功能。
方法一. 精简AppSecurityPermissions代码,实现了功能。
- private void getPermisson(Context context) {
- try {
- PackageManager pm = context.getPackageManager();
- PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
- // 得到自己的包名
- String pkgName = pi.packageName;
- PackageInfo pkgInfo = pm.getPackageInfo(pkgName,
- PackageManager.GET_PERMISSIONS);//通过包名,返回包信息
- String sharedPkgList[] = pkgInfo.requestedPermissions;//得到权限列表
- for (int i = 0; i < sharedPkgList.length; i++) {
- String permName = sharedPkgList[i];
- PermissionInfo tmpPermInfo = pm.getPermissionInfo(permName, 0);//通过permName得到该权限的详细信息
- PermissionGroupInfo pgi = pm.getPermissionGroupInfo(
- tmpPermInfo.group, 0);//权限分为不同的群组,通过权限名,我们得到该权限属于什么类型的权限。
- tv.append(i + "-" + permName + "\n");
- tv.append(i + "-" + pgi.loadLabel(pm).toString() + "\n");
- tv.append(i + "-" + tmpPermInfo.loadLabel(pm).toString()+ "\n");
- tv.append(i + "-" + tmpPermInfo.loadDescription(pm).toString()+ "\n");
- tv.append(mDivider + "\n");
- }
- } catch (NameNotFoundException e) {
- Log.e("##ddd", "Could'nt retrieve permissions for package");
- }
- }
主要通过PackageManager得到该程序的权限列表,然后通过权限的名字得到该权限的PermissionInfo。得到详细信息。得到结果如下图所示:
方法二。 直接用AppSecurityPermissions类,经过导入资源文件,实现了功能。具体代码我下面直接把工程打包。大家可以直接看里面的代码。下面只把效果图展示出来,如下图所示:
我比较喜欢第一种,得到你想要的信息,界面你可以根据自己的想法来设计,并且代码量少。
程序下载地址:http://download.csdn.net/source/3567257
原文地址:点击打开链接