【发布时间】:2013-12-17 13:12:55
【问题描述】:
我正在开发的应用程序需要利用设备上可用的其他应用程序的功能。
这是Intents and Intent Filters 应该在 Android 中处理的范例。我将举一个具体的例子来说明这对于所有情况来说在哪里失败(并且实际上是无用的)。
示例:使用 Intent 将彩信的内容传递给消息应用:
- 我去Intent class reference 并找到哪个系统
ACTION看起来最合适(我已经猜到了-ACTION_SENDvsACTION_SENDTOvsACTION_VIEW和假设ACTION是系统声明的)- 我试着找出是否有特定的
Uri来提供数据(有this list 用于Google 应用程序,我是 假设这将由所有应用程序提供并找到 个人?)- 我现在想找出应该使用哪些
EXTRA键来提供数据(消息正文、图像)。我不知道也没有提示 什么?
当然,我可以查看 StackOverflow 并找到答案 here 和 here 哪个给出了我正在寻找的答案(我还没有找到任何答案来提供带有收件人的彩信和强>图像同时)。但是这实际上应该如何一般地完成呢?非系统、非通用、sms_bodyEXTRA 密钥是如何被人们发现的?
我唯一的答案是直接从应用程序本身收集解决方案(我认为反编译别人的工作已经不应该是正确的方向,而是我唯一的方向)。所以我(这是通过支持 SMS 的新 Hangouts 应用完成的):
这是我的尝试,似乎即使在第一步(反编译其他应用程序)这也不是您应该前进的方向找出与其他明确需要的应用程序通信的语言与之交谈(应用声明IntentFilter 以声明任何通过该过滤器的数据,它希望接收)。
唯一明显的答案是,可以通过 Android SDK 中的类访问某些内容,应用程序声明和定义 它们希望接收的信息。我在这方面找到的最接近的是PackageManager.GET_INTENT_FILTERS 标志,has not even been implmented.
- 我应该如何弄清楚如何正确生成
Intents 以传递给需要此数据的应用? - 最重要的是,我应该如何找到正确的
EXTRAs 来传递Intent?除了在 apk 的源代码中,它们是否在其他任何地方定义?
我一定是遗漏了什么,因为在严重依赖应用间通信的手机操作系统中,为什么要获得基本的通信协议会如此困难。
【问题讨论】:
标签: java android android-intent intentfilter