应用程序是否可以将其权限授予Android中的其他应用程序?

问题描述:

我有一个应用程序说,安装时启用所有权限。另一个应用程序Say B没有权限并希望获得该权限。 B可以与A沟通,以便A可以将其许可转让给B.应用程序是否可以将其权限授予Android中的其他应用程序?

PLS回复,我被卡在这里。我想动态地获得一些权限。这是最好的主意还是其他想法?

这将是非常的安全,不要你想,如果一个应用程序可以给另一个应用程序的任何权限...

一些恶人将只需要说服你安装一个自己的应用程序;然后,无论您安装了哪个其他B应用程序,B应用程序在安装(稍后将由A授予)都不需要任何特定权限 - 而B仍然可以执行您设备上的任何内容?

我当然希望你所要求的是不可能的;-)

您的应用程序可以提供一些内容提供商获取信息。应用程序B可以使用A的内容提供者获得信息。 http://developer.android.com/guide/topics/providers/content-providers.html

但不知何故,这听起来像你想做一些邪恶的事情。如果您想获得更多信息,请提供更多关于您需要这样做的信息!

+2

我不想做任何坏事。我有兴趣创建一个授予动态权限的系统。因此,任何需要许可的应用程序都可以向我的应用程序发送信号,在那里我会要求用户身份验证和一些到期机制,以便在一段时间后覆盖给定的权限。如果用户同意我会授予我请求的应用程序的权限。 – scari 2011-04-03 18:29:08

+0

这就是我想要做的...请帮助 – scari 2011-04-03 18:29:31

+0

有没有什么办法可以在我的应用程序中启用所有权限的情况下,执行'未经许可'应用程序所建议的工作。 像执行处理程序到该应用程序中定义的函数? ( 如我错了请纠正我 )。 或者你可以请建议任何代码或文档,我可以找到在运行时android如何处理权限请求。 (不是Manifest.xml)(真正的android源码) – scari 2011-04-04 09:14:41

据我所知,应用程序不一定会授予其他应用程序的权限,但AppB可以从AppA继承权限,如果您是这两个应用程序的开发人员。如果AppA和AppB在其清单中声明了相同的sharedUserId值(android:sharedUserId =“xyz”),并且AppA和AppB都使用相同的签名进行签名,那么Android会认为它们是相同的应用程序,只要权限不变。因此,AppB可以在设备上存在,例如“perm1”未经许可。然后,AppA可以安装“perm1”。如果AppA和AppB具有相同的sharedUserId和签名,那么当安装AppA时,AppB将被“授予”“perm1”。

我刚才没有测试过,但我知道它曾经工作过(截至一年前)。

是的,这是可能的使用PendingIntents迂回的方式。这不是一个确切的代码片段,但应该给你的想法:

你不能传递权限,但你可以传递能力来执行某些行动从A到B.假设你想要传递执行一定的能力ACTION

  1. A需要创建未决意图:

    Intent intent = new Intent(ACTION);
    PendingIntent pIntent = PendingIntent.getActivity(context, requestCode, intent, flags);

  2. 阿通过编组未决意图

    Intent intent = new Intent(context, B.class);
    intent.putExtra("pendingIntent", pIntent);
    其发送到乙

  3. 在B点,我们反序列化挂起的意图,我们可以用它来进行限制ACTION

    PendingIntent pIntent = intent.getExtra("pendingIntent");
    pIntent.send();