在测试Android应用程序时,出现以下问题:
我安装了3个测试应用程序,以便更好地了解Android的权限属性映射。 (权限与权限组的关联方式)
每个应用程序都使用相同的密钥签名,并定义了特定的权限(权限X)。但是,权限定义在各个应用程序之间有所不同。 也就是说,app1在权限组A中定义了权限X, app2在权限组B中定义了相同的权限X,并且 app3在权限组C中定义了相同的权限X。
因此,当按以下顺序安装这些应用程序:app1,app2,app3时,权限X的唯一权限组是A,这是合乎逻辑的(因为在存在匹配的应用程序签名的情况下,先定义权限先到先服务)。
但是,在卸载app1时,Android操作系统会随机跳至app2或app3对权限X的定义,即:一旦卸载了app1,权限X就会随机地放入B组或C组。我不知道为什么会有这种随机行为?这是Google想要达到的目标,还是这种行为是意外的?
感谢您的帮助。
App1对权限X的定义:
<permission-group android:name="A"/>
<permission
android:name="X"
android:permissionGroup="A"
android:protectionLevel="dangerous" />
App2对权限X的定义:
<permission-group android:name="B"/>
<permissionandroid:name="X"
android:permissionGroup="B"
android:protectionLevel="normal" />
App3的权限X的定义:
<permission-group android:name="C"/>
<permission
android:name="X"
android:permissionGroup="C"
android:protectionLevel="signature" />