Android权限系统在读取清单文件后如何内部工作

5
Android如何在从清单文件中读取权限后跟踪应用程序授予的权限?应用程序权限是基于应用程序ID /包名称/签名密钥/其他方式跟踪的吗?如果它将权限存储在某个存储设备上,那么Android将如何检索权限数组/数据以进行匹配?它将使用类似SHA、应用程序ID或包名称之类的东西吗?
注意:目标环境为Marshmallow 6.0。

这与应用程序的清单文件有关。操作系统将在安装时读取AndroidManifest.xml文件。 - Onkar Nene
@OnkarNene请再次审查问题...我希望现在问题已经清楚了... - Sandeep Rana
4个回答

3
请查看以下链接:
1) http://trendblog.net/android-app-permissions/ 2) https://www.se.jku.at/wp-content/uploads/2012/09/2012.permission-tracking.pdf 如果指定了签名,则只有在请求应用程序使用与声明权限的应用程序相同的证书进行签名时,才会授予访问权限。级别 SignatureOrSystem 允许访问 Android 系统映像中存在的应用程序或使用与系统映像中应用程序相同的证书签名的应用程序。
因此,在这里,签名证书是帮助 Android 系统识别特定权限的允许应用程序的关键要素。
这可能会对您有所帮助!

0

Android OS将读取应用程序的清单文件。


1
好的,同意……但是我想知道在清单文件中声明权限后,它是如何管理权限的……我说的是Android 6.0版本。 - Sandeep Rana
Android 6.0采用相同的方法,但权限将在运行时给予。如果用户拒绝访问,则Android将禁用该应用程序的特定权限。 - viratpuar
那么我的问题是,安卓系统如何知道用户拒绝了这个权限...它在哪里存储这些权限? - Sandeep Rana

0

应用程序使用许多权限,例如使用互联网、访问电话簿、访问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" />

-1
在每个Android应用程序中,都有一个名为AndroidManifest.xml的文件,它使用称为uses-permission的标记定义应用程序的权限。例如:
<uses-permission android:name="android.permission.INTERNET" /> 

这定义了互联网使用的权限。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接