【问题标题】:Creating your own permissions创建自己的权限
【发布时间】:2014-02-07 03:07:20
【问题描述】:

是否可以使用 <uses-permission>标签?

这样

<uses-permission android:name="com.android.myapp.INSTALL_LICENSE"></uses-permission>

其中com.android.myapp是我的包名,INSTALL_LICENSE是用户必须接受的权限

此外,我想将大量现有权限合并到这个权限中,这样客户只需声明一个权限,他们就可以获得 INTERNET、PHONE_STATE 和其他权限。

【问题讨论】:

  • 你能解释一下你的意思吗?权限通常用于限制应用程序与手机硬件交互的方式。
  • @Computerish 我更新了问题

标签: android


【解决方案1】:

“此外,我想将一大堆现有权限合并到这个权限中”。

嗯,不。那将是故意引入一个安全漏洞,允许其他应用程序绕过实际权限。如果找到的话,我希望这会导致应用从市场中撤出。

如果应用程序正在访问 INTERNET、PHONE_STATE 或其他任何内容,他们需要声明他们正在使用的与该功能直接关联的真实权限。

没问题的是拥有您自己的权限来限制应用程序访问您的功能,并在您自己的 .apk 中使用其他权限来实现该功能......但不要 直接将其暴露给应用程序。

换句话说,这没关系:为 DO_SOMETHING 声明一个权限,允许应用程序说发送一个广播吗,让你做某事并返回一个“真”或“假”结果,表明它是否成功。

这不行:为 DO_SOMETHING 声明一个权限,这会公开一个 API,允许应用程序检索手机状态,或将它们提供的一些数据发送到设备外,或检索 GPS 信息。

要在您的应用中声明权限,请使用文档中描述的标签。

但是您真正需要注意的一点是:目前,如果在您的应用之前安装了一个应用并请求您的许可,它将不会被授予该许可。 (因为安装时权限未知。)要获得权限,需要在您的应用安装后重新安装或更新。

【讨论】:

  • +1 指出将多个现有权限捆绑为一个的令人讨厌的安全漏洞(对我来说听起来像是恶意应用程序)!
  • @hackbod:如果声明权限和使用权限应用程序都作为系统应用程序预先安装在固件上怎么办?使用的应用程序可以访问权限吗?
【解决方案2】:

是的,您可以声明自己的权限,如果其他应用想使用您的应用,则应反过来声明您的权限。

例如,您在清单中声明以下内容:

<permission
    android:name="com.examples.permissionexample.MY_APP"
    android:description="@string/boom_perm_string"
    android:label="@string/boom_permission_label_string">
</permission>

然后,在另一个应用程序中,访问您的应用程序的权限将是:

<uses-permission android:name="com.examples.permissionexample.MY_APP" />

【讨论】:

  • 你能给我举个例子吗?其他应用程序可以出于什么目的使用我们的应用程序?或如何?或者其他应用会调用哪个活动?
【解决方案3】:

不确定您所说的“使用标签”是什么意思,但您可以创建新权限来指定其他应用程序如何与您提供的活动和服务进行交互。

请参阅“声明和执行权限”:

http://developer.android.com/guide/topics/security/security.html

【讨论】:

  • 好的,阅读开发者网站的链接,你应该已经准备好了。
猜你喜欢
  • 1970-01-01
  • 2019-10-09
  • 2019-06-15
  • 2013-01-15
  • 1970-01-01
  • 2013-08-04
  • 2021-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多