Android权限 - 查看应用权限信息_com.android.launcher.permission.read_settings-程序员宅基地

1.通过命令查看应用权限:
adb shell dumpsys package "xxx.xxx.xxx"    //如adb shell dumpsys package com.tencent.androidqqmail

重要的权限debug命令。得到的信息的具体解释见以下内容。

2.应用中权限的分类:
(1).自定义权限
Permissions:
  Permission [com.android.launcher3.permission.READ_SETTINGS] (adf0ebe):
    sourcePackage=com.android.launcher3
    uid=10106 gids=null type=0 prot=signature|privileged
    perm=Permission{c6b5b1f com.android.launcher3.permission.READ_SETTINGS}
    packageSetting=PackageSetting{8736e6c com.android.launcher3/10106}

Permissions:
  Permission [com.android.launcher3.permission.WRITE_SETTINGS] (8531c35):
    sourcePackage=com.android.launcher3
    uid=10106 gids=null type=0 prot=signature|privileged
    perm=Permission{3f958ca com.android.launcher3.permission.WRITE_SETTINGS}
    packageSetting=PackageSetting{8736e6c com.android.launcher3/10106}

(2).应用所有的权限列表
Packages:
  Package [com.android.launcher3] (8736e6c):
    userId=10106
    pkg=Package{dbc3796 com.android.launcher3}
    codePath=/system/product/priv-app/Launcher3QuickStep
    resourcePath=/system/product/priv-app/Launcher3QuickStep
    legacyNativeLibraryDir=/system/product/priv-app/Launcher3QuickStep/lib
    primaryCpuAbi=null
    secondaryCpuAbi=null
    versionCode=29 minSdk=29 targetSdk=29
    versionName=10
    splits=[base]
    apkSigningVersion=3
    applicationInfo=ApplicationInfo{e2646b1 com.android.launcher3}
    flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE RESTORE_ANY_VERSION ]
    privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ALLOW_AUDIO_PLAYBACK_CAPTURE PARTIALLY_DIRECT_BOOT_AWARE PRIVILEGED PRODUCT ]
    dataDir=/data/user/0/com.android.launcher3
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    timeStamp=2020-03-06 16:23:16
    firstInstallTime=2020-03-06 16:23:16
    lastUpdateTime=2020-03-06 16:23:16
    signatures=PackageSignatures{6178f17 version:3, signatures:[b4addb29], past signatures:[]}
    installPermissionsFixed=true
    pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP KILL_AFTER_RESTORE RESTORE_ANY_VERSION ]
    declared permissions:
      com.android.launcher3.permission.READ_SETTINGS: prot=signature|privileged, INSTALLED
      com.android.launcher3.permission.WRITE_SETTINGS: prot=signature|privileged, INSTALLED
      com.android.launcher.permission.INSTALL_SHORTCUT: prot=dangerous
    requested permissions:
      android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS
      com.android.launcher.permission.READ_SETTINGS
      com.android.launcher.permission.WRITE_SETTINGS
      com.android.launcher3.permission.READ_SETTINGS
      com.android.launcher3.permission.WRITE_SETTINGS
      android.permission.ACCESS_NETWORK_STATE
      android.permission.ACCESS_WIFI_STATE
      android.permission.CHANGE_NETWORK_STATE
      android.permission.READ_PHONE_STATE
      android.permission.INTERNET
      android.permission.WRITE_OWNER_DATA
      android.permission.WRITE_EXTERNAL_STORAGE: restricted=true
      android.permission.ACCESS_COARSE_LOCATION
      android.permission.ACCESS_FINE_LOCATION
      android.permission.READ_EXTERNAL_STORAGE: restricted=true
      android.permission.MOUNT_UNMOUNT_FILESYSTEMS
      android.permission.GET_APP_GRANTED_URI_PERMISSIONS
      android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS
      android.permission.READ_SMS: restricted=true
      android.permission.KILL_BACKGROUND_PROCESSES
      android.permission.FORCE_STOP_PACKAGES
      android.permission.VIBRATE
      android.permission.READ_CALL_LOG: restricted=true
      android.permission.REQUEST_INSTALL_PACKAGES
      android.permission.READ_CALENDAR
      android.permission.WRITE_CALENDAR
      android.permission.CALL_PHONE
      android.permission.SET_WALLPAPER
      android.permission.SET_WALLPAPER_HINTS
      android.permission.BIND_APPWIDGET
      android.permission.RECEIVE_BOOT_COMPLETED
      android.permission.REQUEST_DELETE_PACKAGES
      android.permission.PACKAGE_USAGE_STATS
      android.permission.READ_FRAME_BUFFER
      android.permission.WAKE_LOCK
      android.permission.FOREGROUND_SERVICE
      android.permission.SYSTEM_ALERT_WINDOW
    install permissions:
      com.android.launcher3.permission.READ_SETTINGS: granted=true
      android.permission.SYSTEM_ALERT_WINDOW: granted=true
      android.permission.CHANGE_NETWORK_STATE: granted=true
      android.permission.FOREGROUND_SERVICE: granted=true
      android.permission.RECEIVE_BOOT_COMPLETED: granted=true
      com.android.launcher3.permission.WRITE_SETTINGS: granted=true
      android.permission.INTERNET: granted=true
      android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS: granted=true
      android.permission.BIND_APPWIDGET: granted=true
      android.permission.PACKAGE_USAGE_STATS: granted=true
      android.permission.MOUNT_UNMOUNT_FILESYSTEMS: granted=true
      android.permission.FORCE_PERSISTABLE_URI_PERMISSIONS: granted=true
      android.permission.ACCESS_NETWORK_STATE: granted=true
      android.permission.SET_WALLPAPER: granted=true
      android.permission.KILL_BACKGROUND_PROCESSES: granted=true
      android.permission.REQUEST_DELETE_PACKAGES: granted=true
      android.permission.SET_WALLPAPER_HINTS: granted=true
      android.permission.FORCE_STOP_PACKAGES: granted=true
      android.permission.VIBRATE: granted=true
      android.permission.ACCESS_WIFI_STATE: granted=true
      android.permission.REQUEST_INSTALL_PACKAGES: granted=true
      android.permission.READ_FRAME_BUFFER: granted=true
      android.permission.GET_APP_GRANTED_URI_PERMISSIONS: granted=true
      android.permission.WAKE_LOCK: granted=true
    User 0: ceDataInode=4456624 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false
      gids=[3003]
      runtime permissions:
        android.permission.READ_SMS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
        android.permission.READ_CALENDAR: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
        android.permission.READ_CALL_LOG: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
        android.permission.ACCESS_FINE_LOCATION: granted=true, flags=[ GRANTED_BY_DEFAULT]
        android.permission.READ_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
        android.permission.ACCESS_COARSE_LOCATION: granted=true, flags=[ GRANTED_BY_DEFAULT]
        android.permission.READ_PHONE_STATE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
        android.permission.CALL_PHONE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
        android.permission.WRITE_CALENDAR: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED]
        android.permission.WRITE_EXTERNAL_STORAGE: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|RESTRICTION_UPGRADE_EXEMPT]
        
3.应用中权限分类
(1).declared permissions :自定义权限
作用:与其他应用分享自己的资源和功能.
By defining custom permissions, an app can share its resources and capabilities with other apps.

为了创建自定义权限,你需要在你应用的AndroidManifest.xml里用一个或多个<permission>来声明。
比如说,一个应用想控制启动它的activity对象,那么可以像下面一个声明一个自定义权限:

<manifest
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.myapp" >
    
    <permission
      android:name="com.example.myapp.permission.DEADLY_ACTIVITY"
      android:label="@string/permlab_deadlyActivity"
      android:description="@string/permdesc_deadlyActivity"
      android:permissionGroup="android.permission-group.COST_MONEY"
      android:protectionLevel="dangerous" />
    ...
</manifest>

protectionLevel:这个属性是必须的,告知系统权限的等级,有如下几种等级:normal,dangerous,signature,signatureOrSystem。

permissionGroup:这个属性是可选的,只被用来帮助系统呈现权限给用户。
在大多数情况,你应该将其设置为一个标准的系统权限组(在android.Manifest.permission_group中列出的).
虽然你可以自己定义一个权限组,但是我们更建议使用存在的权限组,因为可以简化呈现给用户的UI。

label和description:你需要为自定义权限提供label和description。
这些都是用户可以看到的字符串资源,label对应于标签,description对应于权限细节。
label建议写的短一些,而description建议为几句话描述一下权限允许持有者可以做什么。
我们推荐两段式描述,第一句描述一下权限,第二句描述一下如果应用获取了对应权限会有什么风险。

"normal"    
The default value. A lower-risk permission that gives requesting applications access to isolated application-level features, with minimal risk to other applications, the system, or the user. 
The system automatically grants this type of permission to a requesting application at installation, without asking for the user's explicit approval (though the user always has the option to review these permissions before installing).
"dangerous"    
A higher-risk permission that would give a requesting application access to private user data or control over the device that can negatively impact the user. 
Because this type of permission introduces potential risk, the system may not automatically grant it to the requesting application. 
For example, any dangerous permissions requested by an application may be displayed to the user and require confirmation before proceeding, or some other approach may be taken to avoid the user automatically allowing the use of such facilities.
"signature"    
A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission.
 If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval.
"signatureOrSystem"    
A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificate as the application that declared the permission.
 Please avoid using this option, as the signature protection level should be sufficient for most needs and works regardless of exactly where applications are installed.
 The "signatureOrSystem" permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together.

(2).requested permissions :请求权限
是应用所需权限的集合,包含其他权限:declared permissions ,install permissions ,runtime permissions. 

(3).install permissions :安装权限
Android 6.0之前的manifest里包含的所有权限声明都可以当做install permissions。
Android 6.0及以后的版本manifest里除了dangerous permissions即runtime permissions外则都属于install permissions。

安装时权限(Android 5.1 及更低版本):用户在安装或更新应用时,向应用授予危险权限。OEM/运营商可以在不通知用户的情况下,预先安装具有预授权的应用。

(4).runtime permissions  : 运行时权限
运行时权限(Android 6.0 及更高版本):用户在应用运行时向应用授予危险权限。
应用决定何时申请权限(例如,在应用启动或用户访问特定功能时申请权限)。但必须允许用户授予/拒绝授予应用访问特定权限组的权限。

4.用户可以在"Settings"->"Apps & notification"->"App info"->"Permissions"中查看具体应用的权限。
也可以在"Settings"->"Apps & notification"->"Permission manager"中查看所有权限情况。

5.查看data/system/packages.xml中的权限情况
如:查看packages.xml中packageinstaller的权限信息:

<package name="com.android.packageinstaller" codePath="/system/priv-app/PackageInstaller" nativeLibraryPath="/system/priv-app/PackageInstaller/lib" publicFlags="810040901" privateFlags="8" ft="11e8f7d4c00" it="11e8f7d4c00" ut="11e8f7d4c00" version="29" userId="10049" isOrphaned="true">
    <sigs count="1" schemeVersion="3">
        <cert index="1" />
    </sigs>
    <perms>
        <item name="android.permission.USE_RESERVED_DISK" granted="true" flags="0" />
        <item name="android.permission.INSTALL_PACKAGES" granted="true" flags="0" />
        <item name="android.permission.RECEIVE_BOOT_COMPLETED" granted="true" flags="0" />
        <item name="android.permission.INTERACT_ACROSS_USERS_FULL" granted="true" flags="0" />
        <item name="android.permission.PACKAGE_USAGE_STATS" granted="true" flags="0" />
        <item name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" granted="true" flags="0" />
        <item name="android.permission.READ_INSTALL_SESSIONS" granted="true" flags="0" />
        <item name="android.permission.MANAGE_USERS" granted="true" flags="0" />
        <item name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" granted="true" flags="0" />
        <item name="android.permission.MANAGE_APP_OPS_MODES" granted="true" flags="0" />
        <item name="android.permission.UPDATE_APP_OPS_STATS" granted="true" flags="0" />
        <item name="android.permission.DELETE_PACKAGES" granted="true" flags="0" />
    </perms>
    <proper-signing-keyset identifier="1" />
</package>

 

 

 


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hanhan1016/article/details/105864367

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include&lt;stdio.h&gt;#include&lt;string.h&gt;#include&lt;stdlib.h&gt;#include&lt;malloc.h&gt;#include&lt;iostream&gt;#include&lt;stack&gt;#include&lt;queue&gt;using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签