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

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文