android - 定义第三方应用程序在 Android 中使用的权限

标签 android permissions

我想在我的安卓应用中定义一个权限,让其他第三方应用使用。此权限用于限制调用我的模块。也就是说,第三方应用程序必须请求正确的权限才能调用我的模块,就像使用Android系统定义的系统权限一样,android.permission.INTERNET等等。

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

问题是,在调用 startActivity() 时调用需要权限的 Activity 的测试应用程序中,我得到了一个 SecurityException:Permission Denied。但是,如果我在测试应用程序中定义了同名权限,则一切正常。

然后,以下是我的结论:

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

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

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

最佳答案

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

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

关于android - 定义第三方应用程序在 Android 中使用的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4567812/

相关文章:

android - 如何为 TextView 设置最小宽度(以字符为单位)?

java - 如何使 Java 代码从 XML 文件调用字符串(在 Android Studio 中)

linux - 后缀 : set privileges for a certain command pipe alias

.net - Clickonce 发布 - "The file ' default.htm'已存在于此网站中”

java - 从布局捕获按钮时意外停止错误

Android Intent 过滤器不从浏览器启动应用程序

android - 选项卡主机不显示选项卡

PHP:创建文件但不能附加(显然)正确的服务器权限(LAMP)

linux - 无法通过nautilus查看分区

windows - 当这很容易规避时,powershell 拒绝加载任何本地 ps1 脚本的目的是什么?