关于Android权限和签名保护级别

12

我刚接触Android,对于AndroidManifest.xml中权限保护级别“Signature”有疑问。

Android参考文档关于“Signature”保护级别的说明如下:

当请求应用与声明权限的应用使用相同证书签名时,系统授予权限。如果证书匹配,系统会自动授予该权限而不通知用户或请求用户的明确批准。

这意味着具有保护级别“Signature”的权限无法被普通应用使用,只能由Android Dev Team使用。

我想知道在Android Market或其他网站上有多少应用可以获得这些权限?例如,用于录音电话的应用程序除了其他权限外还具有android.permission.DEVICE_POWER权限。在安装时,Android系统是否真的将此权限授予该应用程序?

当我尝试使用“READ_INPUT_STATE”权限(2.2中新添加)时,在LogCat中出现以下错误:

06-28 09:28:34.943: WARN/PackageManager(60): Not granting permission android.permission.READ_INPUT_STATE to package com.example.wheredoyoulive (protectionLevel=2 flags=0x8444)

Protection Level为“SignatureOrSystem”的权限也是如此。存在一个调用者应用程序,除了其他权限外还具有CALL_PRIVILEGED权限。

请帮助我解决疑惑。

谢谢

Abhishek

2个回答

7

感谢您的回复。在您提到的情况下,开发人员必须创建一个新的自定义权限,以充分利用保护级别为我的应用程序提供的设施。我给我的示例应用程序授予了“READ_INPUT_STATE”权限,只是为了检查如果我授予签名级别权限会发生什么。 - tandon16
我对“签名”保护级别有一些疑问。按照上面的讨论,我们能得出结论:没有第三方应用程序会被授予权限来使用“签名”或“SignatureOrSystem”保护级别吗?我的原始问题是: “我想知道的是,在Android市场或其他网站上有多少应用程序可以拥有这些权限?比如一个用于录音电话的应用程序除了其他权限外还具有android.permission.DEVICE_POWER权限。安装应用程序时,Android系统是否真的授予此应用程序此权限?” - tandon16
你能指向一个拥有DEVICE_POWER权限的应用程序吗?根据这个链接,没有(非系统)应用程序可以使用该权限:https://dev59.com/fnRB5IYBdhLWcg3wEDul - Computerish
抱歉回复晚了。该应用程序的名称是CallRecorder v2.8.0。虽然我没有这个应用程序,但我在http://www.androlib.com/android.application.com-opensystem-callrecord-jjDw.aspx上看到了该应用程序及其权限。 - tandon16
请注意,这个问题是在学习Android系统时提出的,旨在澄清Android权限机制方面的疑惑。它与通话录音应用程序的应用程序开发人员或托管应用程序的网站所有者无关。 - tandon16
很抱歉,但我真的不知道。我只能说,在Android市场上,它似乎没有关闭手机的功能(这就是我认为DEVICE_POWER所做的)。在市场上查找该应用程序,按MENU按钮,然后单击Security。 - Computerish

0

Facebook主页使用了这个功能,

一旦你安装它,你会注意到它不需要任何权限,但明确要求安装Facebook应用程序,这是为了系统可以通过Facebook应用程序代理授予它必要的权限。

通常情况下,Facebook应用程序会提供其他应用程序读取你的状态和新闻源的设施,如果这些应用程序在不同的证书或私钥下签名,则通常需要显式请求使用它们的权限。


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