0

我在 Android 模拟器上安装了一个应用程序代码如下当我启动模拟器时,我在浏览器中输入“market.android.com”,我希望启动我的应用程序,但它没有启动

请回答,应用程序的正确工作可以由模拟器提供还是必须使用真实设备?(正是从 android 网络浏览器启动应用程序)

<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 描述为 URI,浏览器将在单击时尝试启动该 URI。要构建这样的方案,最好的方法是编写代码来构建您要启动的 Intent,然后打印 intent.toUri(Intent.URI_INTENT_SCHEME) 的结果。

您可以使用具有此意图的操作来查找支持该操作的任何活动。出于安全原因,浏览器会在启动前自动将 BROWSABLE 类别添加到意图中;出于同样的原因,它还将剥离您提供的任何显式组件。

如果您想确保它只启动您的应用程序,使用它的最佳方法是使用您自己的作用域操作并使用 Intent.setPackage() 表示 Intent 将仅匹配您的应用程序包。

两者之间的取舍:

http URI 要求您拥有自己的域。用户将始终可以选择在浏览器中显示 URI。它有非常好的后备属性,如果你的应用没有安装,它们只会登陆你的网站。

意图 URI 要求您的应用程序已经安装并且仅在 Android 手机上。几乎允许任何意图(但始终包含 BROWSABLE 类别并且不支持显式组件)。它们允许您仅将启动定向到您的应用程序,而用户无需选择转到浏览器或任何其他应用程序。

感谢您的帮助(和代码片段)

4

2 回答 2

0

当我启动模拟器时,我正在输入“market.android.com”并且我希望我的应用程序能够启动,但它没有启动

它不应该在那种情况下开始,假设通过“输入”你的意思是“输入地址栏”。浏览器通常<intent-filter>只为超链接提供这些类型的结构。

请回答,应用程序的正确工作可以由模拟器提供还是必须使用真实设备?

如果您使用超链接,它应该可以在模拟器上运行。

于 2013-05-08T12:08:57.627 回答
0

我的猜测是你离打开你的应用程序只有一步之遥。不要在浏览器中输入 URL,您需要在其他地方有一个 URL。说,在短信中。你会在那里看到一些文字和链接“ http://market.android.com ”。单击此链接时,您应该会看到一个对话框,其中包含使用浏览器或您的应用程序打开它的选项。

对不起,如果我错误地理解了这个问题。

于 2013-05-08T12:22:26.477 回答