首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android:使用意图过滤器启动应用程序不起作用

Android:使用意图过滤器启动应用程序不起作用
EN

Stack Overflow用户
提问于 2011-12-10 10:05:16
回答 4查看 2.3K关注 0票数 1

我知道这个问题在网上被问了很多次,但我就是不能让它起作用。这是我的清单文件(我有3个活动,我只显示了一个我希望在关联时显示的活动):

代码语言:javascript
运行
复制
    <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。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-14 02:51:40

我想通了。这只是一个打字错误的例子。而不是这个,

代码语言:javascript
运行
复制
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.action.BROWSABLE" />
        <category android:name="android.intent.action.DEFAULT" />

我需要将最后两行中的"android.intent.action“替换为"android.intent.category”:

代码语言:javascript
运行
复制
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
票数 1
EN

Stack Overflow用户

发布于 2014-05-01 05:22:52

我之所以在这里添加这个答案,是因为这个帖子是谷歌搜索“意图过滤器从http启动应用程序不起作用”时的热门话题之一。我认为我的根本原因也可以被认为是一个打字错误,但我将其称为"Android文档缺陷“。

this page的底部有一行代码,它将URI分解为:

代码语言:javascript
运行
复制
<scheme>://<host>:<port>/<path>

这个细目表明将为我添加"://“、":”和"/“,因此我在intent-filter中使用了以下数据

代码语言:javascript
运行
复制
<data android:scheme="http" />
<data android:host="my.school.edu" />
<data android:path="thingy" />

然后我给自己发了一条短信,文本如下:“my.學.edu/thingy”,它被我的短信客户端(Hangout)识别为一个网址,所以它是可点击的。然而,点击它只是给了我一个浏览器的选择,我的应用程序没有出现。

所以我删除了主机和路径,我的应用程序启动了任何链接(或者至少是我尝试过的每个链接)。我把主机放回去了,它仍然起作用。把路径放回去,我们又回到了不工作的状态。心血来潮之下,我决定在路径前面加上一个斜杠:

代码语言:javascript
运行
复制
<data android:path="/thingy" />

...et瞧啊!浏览器中有我的应用程序!所以在我看来,错误是Android的文档,它表明斜杠是自动插入的。:)显然不是。

更多信息:我使用HTTP方案,因为在SMS和电子邮件消息中可以点击它,这让我可以免费到达这一点。

请注意,如果您指定了唯一的主机(和路径),并且用户在从列表中选择您的应用程序时选择“总是”,则以后点击您的链接时将绕过该选择对话框,直接转到您的应用程序,这很好用。

票数 0
EN

Stack Overflow用户

发布于 2011-12-10 10:18:42

请确保您的清单中包含internet权限。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8453860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档