假设我在AndroidManifest.xml文件的活动中有一个带有以下intent过滤器的应用程序:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="blabla.com"
android:pathPrefix="/element/"
android:scheme="http" />
</intent-filter>
当然,它会导致我的应用程序从浏览器启动,例如。但是,当用户单击该链接时,系统会要求您选择用于打开该链接的应用程序。如果他/她选择浏览器而不是我的应用程序,此外,他/她检查“不要再问我”复选框,我的应用程序将永远不会启动!
非常感谢你,
答案 0 :(得分:1)
使用带元素的元素。例如,要处理twitter.com的所有链接,您可以将其放入AndroidManifest.xml中:
<intent-filter>
<data android:scheme="http" android:host="twitter.com"/>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
然后,当用户在浏览器中点击Twitter链接时,系统会询问他们使用哪个应用程序来完成操作:浏览器或您的应用程序。
当然,如果您想在您的网站和应用之间提供紧密集成,您可以定义自己的方案:
<intent-filter>
<data android:scheme="my.special.scheme" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
然后,在您的网络应用中,您可以添加以下链接:
<a href="my.special.scheme://other/parameters/here">
And when the user clicks it, your app will be launched automatically (because it will probably be the only one that can handle my.special.scheme:// type of uris). The only downside to this is that if the user doesn't have the app installed, they'll get a nasty error. And I'm not sure there's any way to check.
答案 1 :(得分:0)
使用自定义方案而不是http。也许,x-myapp
<data
android:host="blabla.com"
android:pathPrefix="/element/"
android:scheme="x-myapp" />
让您的blabla.com网络服务器响应http链接(http://blabla.com/element/foo)并重定向到x-myapp://blabla.com/element/foo,用于移动Android设备.....或者在页面上放置一个链接,该链接将包含x-myapp://链接以供用户点击
现在,由于您的应用是唯一响应x-myapp://blabla.com/element/链接的应用,因此您已避免执行第1步。