从Web启动Android应用程序

时间:2013-05-08 12:05:14

标签: android android-layout android-emulator android-widget android-preferences

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

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

使用此功能的最佳方式是,如果您想确保仅启动您的应用,则使用您自己的作用域操作并使用Intent.setPackage()来表示Intent仅匹配您的应用包。

两者之间的权衡:

http URIs要求您拥有自己的域名。用户将始终获得在浏览器中显示URI的选项。它有非常好的后备属性,如果你的应用程序没有安装,它们只会降落在你的网站上。

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

感谢您提供任何帮助(和代码段)

2 个答案:

答案 0 :(得分:0)

  

当我启动模拟器时,我正在键入“market.android.com”,我希望我的应用程序启动,但它无法启动

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

  

请回答,仿真器可以提供正确的应用程序,还是需要使用真实设备?

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

答案 1 :(得分:0)

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

很抱歉,如果我错误地理解了这个问题。