【问题标题】:Intent Filter for opening up only the browser android仅打开浏览器android的意图过滤器
【发布时间】:2014-01-20 20:11:23
【问题描述】:

我的应用有一个带有以下意图过滤器的活动。

<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 的任何链接。但是有时会发生这种情况,应用程序内部没有关于路径的数据,我只需要将他传输回浏览器即可。

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

编辑:-似乎我的问题不是很清楚。该设备有两个包在听同一个意图过滤器。一个是浏览器,另一个是我的应用程序。我的情况是,在某些情况下,我必须仅针对同一意图过滤器的浏览器而不是应用程序。我希望有一些特定的操作或类别可以仅针对浏览器。但是我设法解决了它。我已经把我的答案写在下面了。

【问题讨论】:

  • 您的问题到底是什么?打开浏览器的意图?或者如何更改 pathPattern 以确保它只捕获“有效”的 URL?
  • 我只想针对相同的 url 定位浏览器而不是我自己的应用程序
  • 我还是不明白。您是否想要更新的 pathPattern 以使某些 URL 不会进入您的应用程序,而只会出现在浏览器上?在这种情况下,我们需要更多信息。哪些 URL 不需要在当前的意图过滤器中?
  • @fifarunnerr 查看下面的解决方案和我的编辑。如果您仍然不明白,请远离或聘请抄写员

标签: android intentfilter


【解决方案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;
                }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 2022-01-13
    • 2012-01-07
    • 2012-06-14
    • 1970-01-01
    相关资源
    最近更新 更多