定义第三方应用在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中的权限,

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

而且,以下是我的结论:

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

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

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

我得到了答案。 我自己的应用程序定义了其他应用程序使用的权限,必须先安装其他想要使用我的权限的应用程序。 否则,必须重新安装这些应用程序才能使用我的权限。 不需要其他操作或代码,只需 ,与其他系统定义的权限相同。

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