定义在Android中使用的第三方应用的权限

Mar*_*ang 7 permissions android

我想在我的Android应用中定义权限,并允许其他第三方应用使用.此权限用于限制调用我的模块.也就是说,第三方应用程序必须请求权限才能调用我的模块,就像使用Android系统定义的系统权限,android.permission.INTERNET等.

在我的测试中,我在我的应用程序中定义了权限,说"my.apps.permission.my_permission",然后将其安装在模拟器上.在我的一些活动中,添加了android:permission ="my.apps.permission.my_permission"属性.此属性强制调用我的活动的应用程序必须具有正确的权限"my.apps.permission.my_permission".然后在测试应用中,请求AndroidManifest.xml中的权限,<uses-permission android:name="my.apps.permission.my_permission" />

问题是,在测试应用程序中,它将调用我的权限所需的活动,当我调用startActivity()时,我得到一个SecurityException:Permission Denied.但是,如果我在测试应用程序中定义了具有相同名称的权限,那么一切正常.

而且,以下是我的结论:

1)似乎我的应用程序中定义的权限"my.apps.permission.my_permission"对其他第三方应用程序不可见.如何使其可见,以便其他应用程序可以像Android系统中定义的那样使用我的权限?

2)即使是可见的,Android也不会检查名称冲突的用户定义的权限.(我通过在测试应用程序中定义名称为"android.permission.INTERNET"的权限进行测试,并覆盖系统定义的权限,并要求" android.permission.INTERNET"在我的应用程序中,但仍然,一切正常."如果是这样,每个其他应用程序可以定义一个与我的模块所需的名称相同的权限,并欺骗我的应用程序.是对的吗?

有人可以帮忙吗?非常感谢!

Mar*_*ang 7

我得到了答案.我自己的应用程序定义了其他应用程序使用的权限,必须先安装其他想要使用我的权限的应用程序.否则,必须重新安装这些应用程序才能使用我的权限.不需要其他操作或代码,只需<uses-permission android:name="my.apps.permission.my_permission" />与其他系统定义的权限相同.

并且,多个应用程序可能会定义具有相同名称的权限,相互冲突.第一个安装的应用程序占用冲突的权限名称,其他应用程序不会覆盖或更改原始权限.