我有一个应用程序说A在安装时启用了所有权限。另一个应用程序Say B没有权限,想要获得该权限。 B可以与A通信,以便A可以将其权限转移给B.
PLS回复,我被困在这里。我想动态获得一些权限。这是最好的主意还是其他任何想法?答案 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
的功能。
需要创建待处理的意图:
Intent intent = new Intent(ACTION);
PendingIntent pIntent = PendingIntent.getActivity(context, requestCode, intent, flags);
A通过编组未决意图
将其发送给B. Intent intent = new Intent(context, B.class);
intent.putExtra("pendingIntent", pIntent);
startActivity(intent);
在B处,我们反序列化待处理的意图,我们可以使用它来执行受限制的ACTION
PendingIntent pIntent = intent.getExtra("pendingIntent");
pIntent.send();