【问题标题】:Android open browser from service avoiding multiple tabsAndroid从服务中打开浏览器避免多个选项卡
【发布时间】:2011-08-25 21:02:55
【问题描述】:

我正在尝试使用在浏览器当前选项卡中打开的链接从我的服务打开浏览器窗口。当我使用

Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.google.com"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);

如果在我的服务启动意图之前浏览器已打开并处于前台,并且浏览器会在同一窗口/选项卡中打开链接。如果浏览器被最小化并且服务启动了意图,浏览器会在新窗口/标签页中打开网页。

我不能使用 web 视图,因为它需要在 web 浏览器中,它只会处理默认浏览器。我已经查看了Open an url in android browser, avoid multiple tabs 的帖子,但没有答案。我也试过强制关闭浏览器,但这也不起作用。

感谢您的帮助!

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果您想使用您的应用来触发该意图 .. 请通过包名称直接调用您的应用 检查以下代码:

    Intent in = getPackageManager().getLaunchIntentForPackage("com.package.myappweb");
    in.putExtra("myURL","http://www.google.com");
    in.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity( in );
    

    您可以通过意图传递 URL 并通过以下方式在您的应用中获取它:

    String url=getIntent().getStringExtra("myURL");
    if(url!=null){
    /// launch app and use one tab for showing the webpage
    }else{
    //launch app normally.
    }
    

    您提到的用于将应用程序用作网络应用程序的代码..将显示弹出窗口以用于选择任何浏览器来处理链接..这不适用于任何想要打开链接的应用程序

    祝你好运,

    【讨论】:

      【解决方案2】:

      避免多个标签的方法如下:

      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(uri);
      intent.putExtra(Browser.EXTRA_APPLICATION_ID, getPackageName());
      startActivity(intent);
      

      EXTRA_APPLICATION_ID 将包含您的应用程序的 ID,浏览器将回收您的应用程序打开的选项卡,而不是打开一个新选项卡。这样,您的应用程序打开的所有页面都将共享同一个标签页,您不会在浏览器中出现“标签页膨胀”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 2020-05-09
        • 2014-02-04
        • 2013-04-24
        • 2011-07-28
        相关资源
        最近更新 更多