是否可以为Android应用程序设置一个开放的URI?

时间:2010-08-24 16:15:52

标签: android

从这篇文章:http://developer.android.com/guide/publishing/publishing.html#marketintent

Android市场可以通过具有URI的ACTION_VIEW意图调用,如

http://market.android.com/details?id=<packagename> 

它是如何工作的? market.android.com是否会向浏览器返回一些信息以帮助它打开Android Market应用程序?或者只是本地的浏览器才能解决问题?

是否可以设置一个可以执行相同操作的开放URI?

例如,我有一个名为MyBooks(com.mybooks.app)的应用程序和一个类似的网站:

http://www.mybooks.com

网址可能是

http://www.myboos.com/details?id=0001

当浏览器打开此URL时,该站点将返回某种预定义的响应,该响应可能包含Intent操作字符串,如“com.myboos.app.action.VIEW”和查询的id 0001。

然后,浏览器可以尝试使用该操作“com.mybooks.app.action.View”启动一个Activity,如果有一个Activity,启动它并传入id。如果没有,它会尝试连接另一个像

这样的网址
http://www.myboos.com/details?id=0001&installed=false

这可以在任何版本的Android上使用吗?

2 个答案:

答案 0 :(得分:4)

你真的在想这个 - “market.android.com/ ??”网址甚至从未进入浏览器,并且这些网址没有返回特殊数据。实际发生的情况是,在系统浏览器访问之前,系统通过市场应用中定义的Intent过滤器匹配URL。您可以在Android documentation

中详细了解Intent过滤器以及如何设置自己的过滤器

答案 1 :(得分:1)

关于意图和意图过滤器,请查看this article。您应该可以在AndroidManifest.xml中设置类似的内容。

<activity...>
<intent-filter . . . >
    <category android:name="android.intent.category.BROWSABLE" />
    <data scheme="http" host="www.mybooks.com" path="/details" />
</intent-filter>
</activity>

我个人没试过,但我希望这能指出你正确的方向。