Android如何在从清单文件中读取权限后跟踪应用程序授予的权限?应用程序权限是基于应用程序ID /包名称/签名密钥/其他方式跟踪的吗?如果它将权限存储在某个存储设备上,那么Android将如何检索权限数组/数据以进行匹配?它将使用类似SHA、应用程序ID或包名称之类的东西吗?
注意:目标环境为Marshmallow 6.0。
注意:目标环境为Marshmallow 6.0。
Android OS
将读取应用程序的清单文件。
应用程序使用许多权限,例如使用互联网、访问电话簿、访问SD卡等。在每次安装应用程序之前,Android会显示应用程序需要的权限。用户在应用程序安装之前就知道应用程序正在使用哪些权限。
而Android通过查看名为AndroidManifest.xml的Android清单文件来了解这一点。该文件包含在每个Android应用程序的根目录中。所有权限都在其中受到控制。
清单文件的结构:
<uses-permission />
<permission />
<permission-tree />
<permission-group />
<instrumentation />
<uses-sdk />
<uses-configuration />
<uses-feature />
<supports-screens />
<compatible-screens />
<supports-gl-texture />
<application>
<activity>
<intent-filter>
<action />
<category />
<data />
</intent-filter>
<meta-data />
</activity>
<activity-alias>
<intent-filter> . . . </intent-filter>
<meta-data />
</activity-alias>
<service>
<intent-filter> . . . </intent-filter>
<meta-data/>
</service>
<receiver>
<intent-filter> . . . </intent-filter>
<meta-data />
</receiver>
<provider>
<grant-uri-permission />
<meta-data />
<path-permission />
</provider>
<uses-library />
</application>
每个权限都由唯一的标签标识,并且该标签指示受限制的操作。Android 定义的一些权限示例:
android.permission.INTERNET
android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
<used-permission>
元素,如下所示。<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.INTERNET" />
这定义了互联网使用的权限。