意图过滤器无法打开自定义应用程序

时间:2012-01-23 05:48:29

标签: android android-intent

我正在尝试获取一个URL来打开我编写的自定义应用程序,但意图过滤器似乎不起作用。我已经看了十几个似乎提供“解决方案”的线程,但对我来说这并不好。

我需要通过QR码扫描操作打开我的应用程序。因此,我不在任何浏览器中点击任何链接。我只是打开我的QR扫描仪,扫描QR码,并希望它启动我的应用程序,而不是打开默认的Web浏览器。 QR扫描程序的默认操作是在Web浏览器中打开URI。

manifest.xml是这样的:

<activity
        android:name=".Main"
        android:label="@string/app_name" >
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <data android:scheme="http" android:host="tinysb.com" android:path="/ecard/" />
            <action android:name="android.intent.action.VIEW" /> 
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

    </activity>

我的二维码指向http://tinysb.com/ecard/所以如果任何应用程序遇到该链接,我正在寻找能够启动我的应用而不是浏览器的东西。目前,浏览器启动,我甚至没有选择扫描QR码后该怎么做。现在,我没有从Web服务器传递任何东西,所以我只是需要它来启动我的应用程序而不传递任何东西。

由于这一切都是从QR扫描程序启动的,因此没有任何活动我可以编码拦截URI。

很多帖子都说过设置android:scheme应该可以解决问题,但它根本不适用于我。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

问题可能是您正在使用的QR Code扫描仪。应用程序可以指定应用程序来打开URL而不是让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:host="getamen.com" android:scheme="http" android:pathPrefix="/topics"/>
</intent-filter>

您可以尝试使用android:pathPrefix =“/ ecard”或添加BROWSABLE类别。