【发布时间】:2013-05-02 15:47:02
【问题描述】:
我在 Android 模拟器上安装了一个应用程序代码如下当我启动模拟器时,我在浏览器中输入“market.android.com”,我希望启动我的应用程序,但它没有开始
请回答,应用程序的正确工作可以由模拟器提供还是必须使用真实设备? (确切地说是从 android web 浏览器启动应用程序)
<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:scheme="http" android:host="market.android.com"
android:path="/search" />
</intent-filter>
另外,还有“intent:”方案。这允许您将几乎任何 Intent 描述为 URI,浏览器将在单击时尝试启动该 URI。要构建这样的方案,最好的方法是编写代码来构建您要启动的Intent,然后打印intent.toUri(Intent.URI_INTENT_SCHEME)的结果。
您可以使用具有此意图的操作来查找支持该操作的任何活动。出于安全原因,浏览器会在启动前自动将 BROWSABLE 类别添加到意图中;出于同样的原因,它还会删除您提供的任何显式组件。
如果你想确保它只启动你的应用程序,最好的使用方法是使用你自己的作用域操作并使用 Intent.setPackage() 表示 Intent 将只匹配你的应用程序包。
两者之间的权衡:
http URI 要求您拥有自己的域。用户将始终可以选择在浏览器中显示 URI。它具有非常好的后备属性,如果您的应用未安装,它们只会登陆您的网站。
intent URI 要求您的应用已经安装并且只能安装在 Android 手机上。几乎允许任何意图(但始终包含 BROWSABLE 类别并且不支持显式组件)。它们允许您仅将启动定向到您的应用,而用户无需选择转到浏览器或任何其他应用。
感谢您的帮助(和代码 sn-ps)
【问题讨论】:
标签: android android-layout android-emulator android-widget android-preferences