如何发现另一个应用程序的意图

4
我正在尝试构建一个应用程序来接收来自StumbleUpon应用程序的分享。 目前,我可以接收浏览器的“分享URL”,但从StumbleUpon分享时,我的应用程序不会显示在列表中。
我认为可能没有在清单文件中正确注册Intents。 有没有办法找到该应用程序正在做什么?
谢谢。

你正在声明什么意图?类似于以下代码:<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> ? - njzk2
代码 <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /><action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> <action android:name="android.intent.action.CHOOSER" /> <category android:name="android.intent.category.DEFAULT" /> <action android:name="android.intent.action.SENDTO"/> <category android:name="android.intent.category.BROWSABLE"/> <category android:name="android.intent.category.DEFAULT"/> - GMEFil
你的类别必须在动作中。 - njzk2
你的意思是这样吗? <action android:name="android.intent.action.MAIN" > <category android:name="android.intent.category.LAUNCHER" /> </action> 它甚至不会显示在应用程序托盘中。 - GMEFil
我的错。我不知道为什么写了这个,它完全是错误的。也许可以将不同的操作放在不同的意图过滤器中,或者为操作定义数据类型? - njzk2
1个回答

3

您可以从Logcat中获取与意图相关的一些信息。当我在StumbleUpon上分享时,我在日志中注意到了以下内容:

12-08 19:01:18.915: I/ActivityManager(139): Starting activity: Intent { act=android.intent.action.SEND typ=text/plain flg=0x3000000 cmp=com.google.android.gm/.ComposeActivityGmail (has extras) } from pid 4213

通过这个,我能够使用以下过滤器,在StumbleUpon分享列表中显示应用程序:

<intent-filter>
   <action android:name="android.intent.action.SEND" />
   <category android:name="android.intent.category.DEFAULT" />
   <data android:mimeType="text/plain"/>
</intent-filter>

似乎许多意图在代码中动态注册,无需在清单中定义 :-/ - Daniel Gorodowienko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接