应用程序可以将其权限授予android中的其他应用程序吗?

时间:2011-04-03 12:19:49

标签: android dynamic permissions runtime

我有一个应用程序说A在安装时启用了所有权限。另一个应用程序Say B没有权限,想要获得该权限。 B可以与A通信,以便A可以将其权限转移给B.

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

4 个答案:

答案 0 :(得分:3)

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

我刚才没有对此进行测试,但我知道它曾经工作过(大约一年前左右)。

答案 1 :(得分:1)

如果某个应用程序可以向其他应用程序授予任何权限,那么这将是非常安全的,不要您认为...

一些邪恶的人只会说服你安装他的A应用程序;然后,无论您安装的是哪个其他B应用程序,B应用程序都不必在安装时请求任何特定权限(这些权限稍后将由A授予) - 并且B将仍然可以在你的设备上做任何事情?

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

是的,这可以使用PendingIntents以环形方式进行。这不是一个确切的代码片段,但应该给你一个想法:

您无法转移权限,但可以转移功能以执行从A到B的某些操作。假设您要转移执行某个ACTION的功能。

  1. 需要创建待处理的意图:

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

  2. A通过编组未决意图

    将其发送给B.

    Intent intent = new Intent(context, B.class);
    intent.putExtra("pendingIntent", pIntent);
    startActivity(intent);

  3. 在B处,我们反序列化待处理的意图,我们可以使用它来执行受限制的ACTION

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