我知道这个问题在SO上被多次询问和回答,但我无法让它发挥作用。这是我的清单文件(我有3个活动,我正在显示我想要关联时唯一显示的文件):
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:theme="@style/HoloDarkTheme" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.ACTION_SEND" />
<action android:name="android.intent.action.EXTRA_TEXT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.action.BROWSABLE" />
<category android:name="android.intent.action.DEFAULT" />
<data android:scheme="http" />
<data android:host="example.com" />
</intent-filter>
</activity>
当我启动浏览器并转到“example.com”时,我的应用程序未启动。上面的XML有什么问题吗?
不确定是否相关,但此活动使用MediaPlayer播放视频。另外,我使用的是SDK版本11。
答案 0 :(得分:1)
我明白了。这只是一个拼写错误的案例。而不是这个,
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.action.BROWSABLE" />
<category android:name="android.intent.action.DEFAULT" />
我需要在最后两行用“android.intent.category”替换“android.intent.action”:
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
答案 1 :(得分:0)
我在这里添加这个答案,因为这个帖子是谷歌搜索“意图过滤从http无法启动应用程序”的热门点击之一。我想我的根本原因也可能被认为是一个错字,但我将其称为“Android文档缺陷”。
在this page的底部有一条线路,将URI分解为:
<scheme>://<host>:<port>/<path>
此细分表示我会添加“://”,“:”和“/”,因此我在intent-filter
中使用了以下数据:
<data android:scheme="http" />
<data android:host="my.school.edu" />
<data android:path="thingy" />
然后我给自己发了一条短信,其中包含以下文字:“my.school.edu/thingy”,我的短信客户端(环聊)将其识别为网址,因此可以点击它。但是,点击它只是给了我一个浏览器选择,我的应用程序没有显示。
所以我删除了主机和路径,我的应用程序针对任何链接(或至少我尝试的每个链接)启动。我把主机放回去了,它仍然有效。把路径放回去,我们又恢复了工作。一时兴起,我决定在路径前加一条斜线:
<data android:path="/thingy" />
...etvoilà!浏览器中有我的应用程序!所以我的视图中的错误是Android的文档,它表明斜杠是自动插入的。 :)显然不是。
更多信息:我正在使用HTTP方案,因为这是可以在短信和电子邮件中点击的内容,让我可以免费搭乘这一点。
请注意,如果您指定一个唯一的主机(和路径),并且用户在从列表中选择您的应用时选择“始终”,则链接上的未来点击将绕过该选择对话框并直接转到您的应用,很好。
答案 2 :(得分:-1)
确保您的清单中有互联网权限。
答案 3 :(得分:-1)
我怀疑您是否可以覆盖http
计划以指回您的应用。