【问题标题】:Open browser intent throws Exception打开浏览器意图抛出异常
【发布时间】:2021-12-25 10:58:35
【问题描述】:

我在小米设备(Xiamoi Poco F3,MIUI 12.5.6,Android 版本 11)上打开浏览器 Intent 时出现了一些奇怪的行为。

这是处理打开浏览器逻辑的部分:

    String html = "https://www.google.de";
    
    try
    {
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(html);
        browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(browserIntent);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

案例#1:html = https://www.google.de/search?q=X

案例#2:html = https://www.google.de

案例 #1 正在运行,案例 #2 引发以下异常:

未找到处理 Intent 的 Activity { act=android.intent.action.VIEW dat=https://www.google.de/... flg=0x10000400 }

有人可以评估正在发生的事情吗?

【问题讨论】:

    标签: android android-intent xiaomi


    【解决方案1】:

    如果您在尝试从 Android 应用打开网页时也遇到此错误,那是因为您的 URL 如下所示:

    www.google.com
    

    代替:https://www.google.comhttp://www.google.com

    将此代码添加到您的活动/片段:

    public void openWebPage(String url) {
    
        Uri webpage = Uri.parse(url);
    
        if (!url.startsWith("http://") && !url.startsWith("https://")) {
            webpage = Uri.parse("http://" + url);
        }
    
        Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        }
    }
    

    只需将您的网址传递给openWebPage()。如果它已经以 https://http:// 为前缀,那么你就可以开始了,否则 if 语句会为你处理

    【讨论】:

    • 感谢您的回答。但正如我在我的案例中指出的那样,网址已经以 https 开头。所以这个解决方案不能解决我的问题。还是谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 2018-04-11
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2011-03-09
    • 2015-09-06
    • 2014-02-18
    相关资源
    最近更新 更多