【发布时间】:2010-12-31 03:05:02
【问题描述】:
我想在我的 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”,但一切正常。)如果是这样,每个其他应用程序都可以定义一个与我的模块所需名称相同的权限,并欺骗我的应用程序。对吗?
有人可以帮忙吗? 非常感谢!
【问题讨论】:
-
看那里,可能是你要找的东西:stackoverflow.com/questions/4425940/…
标签: android permissions