2014-01-20 160 views
0

我的应用程序具有一个包含以下意图过滤器的活动。仅用于打开浏览器的意图过滤器android

<intent-filter> 
      <action android:name="android.intent.action.VIEW"></action> 
      <category android:name="android.intent.category.DEFAULT"></category> 
      <category android:name="android.intent.category.BROWSABLE"></category> 
      <data android:host="m.testsite.com"> </data> 
      <data android:scheme="http"></data> 
      <data android:pathPattern=".*"></data> 
</intent-filter> 

这会打开应用程序中的url http://m.testsite.com/anypath的任何链接。然而,有时恰恰相反,应用程序内部没有关于路径的数据,我只需要将其传回浏览器。

这应该是什么意图过滤器?

编辑: - 像我的问题似乎不是很清楚。该设备有两个包倾听同一个意图过滤器。一个是浏览器,另一个是我的应用程序。我处于一种情况,在某些情况下,我只需要定位浏览器,而不是针对同一个意图过滤器的应用程序。我希望能有一些特定的行动或类别,我可以单独针对浏览器。不过,我设法解决它。我已经把我的答案放在下面。

+1

究竟什么是你的问题?意图打开浏览器?或者如何更改pathPattern以确保它只捕获“有效”的URL? – fifarunnerr

+0

我只想定位浏览器,而不是我自己的应用程序相同的网址 – Rasmus

+1

我仍然不明白。你想要一个更新的pathPattern,所以一些URL不会去你的应用程序,但只能在浏览器上?那样的话,我们需要更多的信息。目前哪些网址不需要存在于意图过滤器中? – fifarunnerr

回答

1

这是我如何解决它最后: -

for (ResolveInfo resolveInfo : list) { 
    if (!activityName.contains("MyApplicationActivity")) { 
        browserIntent = 
          packageManager.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName); 
        ComponentName comp = 
          new ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); 

        browserIntent.setAction(Intent.ACTION_VIEW); 

        browserIntent.setComponent(comp); 
        browserIntent.setData(data); 
        startActivity(browserIntent); 
        break; 
       }}