我正在尝试在我的应用程序中使用另一个应用程序(Bazaar)创建的自定义权限(这是一个使用市场com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR
的权限)。通常情况下,它可以正常工作。
但是,如果在我的应用程序之后安装Bazaar,我的应用程序将无法获得自定义权限(由Bazaar创建),并会抛出异常。我想知道是否有其他人遇到过类似的问题,并且你们有什么解决方案?
我正在尝试在我的应用程序中使用另一个应用程序(Bazaar)创建的自定义权限(这是一个使用市场com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR
的权限)。通常情况下,它可以正常工作。
但是,如果在我的应用程序之后安装Bazaar,我的应用程序将无法获得自定义权限(由Bazaar创建),并会抛出异常。我想知道是否有其他人遇到过类似的问题,并且你们有什么解决方案?
这是期望的行为。
在教科书《Android安全内部:深入了解Android的安全架构》(2014)中,Nikolay Elenkov提到:
系统只能授予它知道的权限,这意味着定义自定义权限的应用程序需要在使用这些权限的应用程序之前安装。如果应用程序请求系统不知道的权限,则该权限会被忽略并且不会被授予。
顺便说一下,权限是在安装时由PackageManager分配给每个应用程序的,它维护了一些已安装包的信息,例如包名、版本和权限,这些信息存储在/data/system/packages.xml
中。如果您想查询设备上的所有权限,可以尝试使用pm list permissions
。