【问题标题】:Web browser application - how to intercept URL intents?Web 浏览器应用程序 - 如何拦截 URL 意图?
【发布时间】:2019-09-27 07:25:02
【问题描述】:

我有一个自定义 ROM,除了 WebView Browser Tester 之外没有默认浏览器。我开发了自己的网络浏览器应用程序(webviewclient 活动)并将其安装在手机中。现在我希望当用户在手机中点击任何 URL 时,我的浏览器应用程序都会拦截并加载这个 URL。这是我在 intent_filter 中使用的内容

 <intent_filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent_filter>

但它不起作用,仍然WebView browser Tester 应用程序启动和加载链接。有人可以告诉我如何将我的应用程序设置为默认浏览器应用程序或使用任何特殊意图来帮助在单击任何URL 时启动此活动?

【问题讨论】:

    标签: android android-intent android-activity android-manifest intentfilter


    【解决方案1】:

    尝试添加两个意图过滤器

            <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="*"/>
            </intent-filter>
            <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="https"
                    android:host="*" />
            </intent-filter>
    

    【讨论】:

      【解决方案2】:

      为此,您必须确定启动 ActivityBrowser 应用程序,如下所示:

      Intent intent = new Intent();
      intent.setComponent(new ComponentName("/*Pass your browser package*/","com.google.android.browser.BrowserActivity /*And pass Browser Activity*/"));
      intent.setAction("android.intent.action.VIEW");
      intent.addCategory("android.intent.category.BROWSABLE");
      Uri uri = Uri.parse(url);
      intent.setData(uri);
      try
      {
          startActivity(intent);
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
      

      this 链接上已有答案

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-13
        • 1970-01-01
        • 2010-12-09
        • 1970-01-01
        • 2019-12-22
        • 2011-08-04
        • 1970-01-01
        相关资源
        最近更新 更多