Android获取程序详细权限信息

2024-04-29 00:48

本文主要是介绍Android获取程序详细权限信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们大家平时打开android程序管理的选项,可以看到一个程序的权限列表,内容详细。如下图所示:

 

                                                      

 

我就想自习写程序得到一个程序的权限列表。

由于系统程序里实现了这个功能,系统源码肯定有这段代码。经过上网搜索,找到实现这个功能的方面类AppSecurityPermissions,大家可以在源码里找到这个java文件。我用两种方法实现了该功能。

 

方法一. 精简AppSecurityPermissions代码,实现了功能。

[java] view plaincopy
  1. private void getPermisson(Context context) {  
  2.         try {  
  3.             PackageManager pm = context.getPackageManager();  
  4.             PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);  
  5.             // 得到自己的包名  
  6.             String pkgName = pi.packageName;  
  7.   
  8.             PackageInfo pkgInfo = pm.getPackageInfo(pkgName,  
  9.                     PackageManager.GET_PERMISSIONS);//通过包名,返回包信息  
  10.             String sharedPkgList[] = pkgInfo.requestedPermissions;//得到权限列表  
  11.   
  12.             for (int i = 0; i < sharedPkgList.length; i++) {  
  13.                 String permName = sharedPkgList[i];  
  14.   
  15.                 PermissionInfo tmpPermInfo = pm.getPermissionInfo(permName, 0);//通过permName得到该权限的详细信息  
  16.                 PermissionGroupInfo pgi = pm.getPermissionGroupInfo(  
  17.                         tmpPermInfo.group, 0);//权限分为不同的群组,通过权限名,我们得到该权限属于什么类型的权限。  
  18.                   
  19.                 tv.append(i + "-" + permName + "\n");  
  20.                 tv.append(i + "-" + pgi.loadLabel(pm).toString() + "\n");  
  21.                 tv.append(i + "-" + tmpPermInfo.loadLabel(pm).toString()+ "\n");  
  22.                 tv.append(i + "-" + tmpPermInfo.loadDescription(pm).toString()+ "\n");  
  23.                 tv.append(mDivider + "\n");  
  24.   
  25.             }  
  26.         } catch (NameNotFoundException e) {  
  27.             Log.e("##ddd""Could'nt retrieve permissions for package");  
  28.   
  29.         }  
  30.     }  


主要通过PackageManager得到该程序的权限列表,然后通过权限的名字得到该权限的PermissionInfo。得到详细信息。得到结果如下图所示:

 

                                                

 

方法二。 直接用AppSecurityPermissions类,经过导入资源文件,实现了功能。具体代码我下面直接把工程打包。大家可以直接看里面的代码。下面只把效果图展示出来,如下图所示:

 

我比较喜欢第一种,得到你想要的信息,界面你可以根据自己的想法来设计,并且代码量少。

 程序下载地址:http://download.csdn.net/source/3567257

原文地址:点击打开链接

这篇关于Android获取程序详细权限信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944705

相关文章

03 JavaSE-- 访问控制权限、抽象类/方法、interface、内部类、Object 类

1. 访问控制权限 访问权限控制符不能修饰局部变量。类中的属性和方法访问权限共有四种:private、缺省、protected和public。 private:私有的,只能在本类中访问。缺省:默认的,同一个包下可以访问。protected:受保护的,子类中可以访问。(受保护的通常就是给子孙用的。)public:公共的,在任何位置都可以访问。 类的访问权限只有两种:public 和 缺省。

uniapp push个推在线和离线消息监听,离线消息intent参数设置和获取,java后端推送

uniapp push 1.0版本 我用华为手机测试的离线消息,首先要保证在华为后台推送消息,uniapp离线打包的app能收到。 java后端推送 pom.xml依赖 <dependency><groupId>com.getui.push</groupId><artifactId>restful-sdk</artifactId><version>1.0.1.0</ve

百度地图提供的微信小程序的功能少到让我想跳楼

呜呜呜。 为什么uni-app使用vue-baidu-map然后启动在微信开发者工具就会有一大堆不明所以的报错啊

Selenium操作浏览器设置窗口坐标及获取窗口坐标

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 文章目录 1. 获取窗口坐标点2. 获取窗口横坐标3. 获取窗口纵坐标4. 设置窗口坐标5. 完整代码 执行程序前请先配置驱动: 关于Java selenium使用前浏览器驱动的下载和环境变量的

Spring boot:获取项目路径的几种方式

代码对应的工程路径图:  1、获取当前项目工程下静态资源图片路径,以下两种方法皆可: /** * 方法一 */ String path = this.getClass().getResource("/static/img/logo.png").getPath(); System.err.println("path:" + path); // path:C:/Users/Administrato

使用Spring安全表达式控制系统功能访问权限

、SPEL表达式权限控制 从spring security 3.0开始已经可以使用spring Expression表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式函数        描述 hasRole([role])        用户拥有指定的角色时返回true (S

青蒿素优化算法(AO)-2024年新算法-公式原理详解与性能测评 Matlab代码免费获取

声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~  目录 原理简介 一、初始化阶段 二、综合淘汰阶段 三、局部清除阶段 四、后巩固阶段 算法流程图和伪代码 性能测评 参考文献 完整代码         青蒿素优化算法(AlgorithmArtemisinin

智能小程序 Ray 开发基础API——系统 API 合集(三)

handleShortcut 操作快捷方式,包括添加和移除, 仅 iOS 引入 import { handleShortcut } from '@ray-js/ray'; 需引入BizKit,且在>=3.1.1版本才可使用。 参数 Object object 属性类型默认值必填说明typenumber是操作类型。0-添加、1-移除sceneIdstring是场景 IDnames

【网络安全】适合新手的CTF靶场合集(非常详细)零基础入门到精通,收藏这一篇就够了

前言 经常会有粉丝朋友询问大白,如何打CTF比赛,有没有适合新手的CTF靶场? 今天呢大白就给粉丝朋友分享一下,我整理得可能没有那么全,这里的合集主要还是面对新手。做题贵精不在多,好好练习每一题,学习每个知识点,不懂的百度或者 Google 即可。记住,你是为了提高自己而去打 CTF 。 CTF 比赛时间表 CTFwiki(入门必看wiki): https://ctf-wiki.git

【网络编程】Servlet的前后端练习 | 表白墙 | 前后端交互 | 提交消息 | 获取消息

文章目录 一、Servlet的前后端练习1.表白墙服务器要实现的逻辑:1.获取消息 :2.提交消息:完整前端代码:完整后端代码: 一、Servlet的前后端练习 1.表白墙 服务器要实现的逻辑: 1.页面加载时,网页要从服务器这里获取到当前表白的数据。(让网页端给服务器发起http请求,服务器返回响应里就带着这些数据) 2.点击提交的时候,网页把用户输入的