【问题标题】:Android intent to open user's preferred browserAndroid意图打开用户的首选浏览器
【发布时间】:2011-03-09 04:47:03
【问题描述】:

我一直在尝试找出如何创建一个可以在不指定 URL 的情况下打开用户首选浏览器的意图。我知道如何通过提供这样的特定 URL 来打开它:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(android.net.Uri.parse("http://www.google.com"));
context.startActivity(intent);

我不想特别打开浏览器到任何页面,只是设置的主页或用户最后访问的任何页面。我考虑过在应用程序中查找主页设置,但您不能使用默认浏览器应用程序来执行此操作,因为它是私有的。有人知道这样做的方法吗?

【问题讨论】:

    标签: android browser android-intent


    【解决方案1】:

    我是这样做的:

    String packageName = "com.android.browser"; 
    String className = "com.android.browser.BrowserActivity"; 
    Intent internetIntent = new Intent(Intent.ACTION_VIEW);
    internetIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    internetIntent.setClassName(packageName, className); 
    mHomeActivity.startActivity(internetIntent);
    

    如果您没有设置主页,它将打开一个空白页面(至少在 Android 2.1 中)。

    【讨论】:

      【解决方案2】:
                  Uri uri = Uri.parse("www.google.com");
                  Intent intent = new Intent(Intent.ACTION_VIEW,uri);
                  // Create and start the chooser
                  Intent chooser = Intent.createChooser(intent, "Open with");
                  startActivity(chooser);
      

      此代码创建打开用户指定浏览器的意图。

      【讨论】:

        【解决方案3】:

        这是一个较晚的答案,但看起来 API 15 中提供了此功能:

          Intent browser = Intent.makeMainSelectorActivity(
                 Intent.ACTION_VIEW, 
                 Intent.CATEGORY_APP_BROWSER);
        
          startActivity(browser);
        

        Docs for makeMainSelectorActivity

        【讨论】:

          【解决方案4】:

          用户指定的主页 URL 将存储在他们使用的任何浏览器应用的首选项中。使用 Android 的应用程序“沙盒”模型,除非应用程序具有允许访问的内容提供程序,否则您将无法访问它。此外,浏览器应用程序之间的内容提供程序会有所不同,您将很难涵盖那些确实存在的应用程序。

          您是否尝试过打开一个尝试通过使用 JavaScript 更新用户主页 URL 的网页?

          【讨论】:

          • 不,我没有尝试过这种方法,因为我主要考虑使用意图。我不是一个网络开发人员,但我会看看它!是否有任何有用的 javascript API 可以转到主页?
          • 我一直在寻找一种方法来检索浏览器的主页以及使用 javascript 访问浏览器主页的方法,但没有任何运气。我认为不可能做到这一点。有人愿意证明我错了。
          【解决方案5】:

          试试这个:

          Intent intent = new Intent(Intent.ACTION_MAIN);
          intent.addCategory(Intent.CATEGORY_APP_BROWSER);
          if (intent.resolveActivity(getPackageManager()) != null) {
              startActivity(intent.createChooser(intent, "Select Browser"));
          }
          else { //Popup a msg so as to know the reason of not opening the browser
              Toast.makeText(this, "There is no Browser App", Toast.LENGTH_LONG).show();
          }
          

          为我工作,也希望你!

          【讨论】:

            【解决方案6】:

            使用下面的代码

            Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com"));
            Intent chooser = Intent.createChooser(sendIntent, "Choose Your Browser");
            if (sendIntent.resolveActivity(getPackageManager()) != null) 
                startActivity(chooser);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-02-18
              • 1970-01-01
              • 1970-01-01
              • 2020-06-04
              • 2021-12-25
              • 2021-05-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多