我想写一个Android应用程序(我们称之为'ZX'),它与其他未提前知道的应用程序进行通信。
ZX不想与所有其他应用通信。它只希望通过ZX权限与用户批准的应用进行通信。用户可以通过ZX的其中一项活动随时授予和撤销ZX权限。
为了做到这一点,ZX需要确定哪个应用程序正在尝试与之通信,如果应用程序首次与ZX连接,则需要显示其名称(或其他唯一标识的内容)它)向用户询问它是否应该允许它。
问题:
1)如何识别通话应用?
2)建议使用哪种IPC机制?
答案 0 :(得分:1)
要对这个问题给出一个很好的答案是很难的,因为你对细节非常神秘......但是,我会对它进行一次刺痛......
根据“ZX”的作用,像Observer Pattern这样的东西可能会起作用。如果应用程序想要与ZX通信,他们会向ZX发送一条消息,将自己添加到ZX维护的查找表/列表中。
基本上你有这样的东西......
应用程序AI
希望与ZX通信。它向ZX
发送一条消息,其中包含有关应用程序的信息(无论您需要什么,IP地址等)。此信息可以转到addApplication()
这样的函数,该函数会生成一个新的CommApp
对象,用于存储有关应用程序的所有相关信息。
ZX
可以发送AI
唯一的身份验证密钥,可用于进一步通信。这可以处理实际的会话。可以使用唯一密钥对两个应用程序之间的任何进一步通信进行身份验证。这种方法假设您使用身份验证来识别不同的应用程序,而不是试图阻止“坏人”。
如果您可以扩展实际情况,我很乐意根据您的需求编辑我的问题。
答案 1 :(得分:1)
“使用Binder或Messenger是Android中RPC风格IPC的首选机制。它们提供了一个定义明确的界面,可以根据需要实现端点的相互身份验证。”
http://developer.android.com/training/articles/security-tips.html#IPC