Android调用浏览器打开网址遇到的问题

简介: 我自己的手机(一加一代,升级了氢OS),然后在点击游戏内一个“隐私政策”-- 需要打开一个网页,然后就crash了。出错的信息如下: 完全是看不出来,然后我单独写了一个demo来测试那段代码,发现错误的详情是这样: 09-29 11:45:27.

我自己的手机(一加一代,升级了氢OS),然后在点击游戏内一个“隐私政策”-- 需要打开一个网页,然后就crash了。出错的信息如下:

完全是看不出来,然后我单独写了一个demo来测试那段代码,发现错误的详情是这样:

09-29 11:45:27.576: E/AndroidRuntime(17871): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW cat=[android.intent.category.BROWSABLE] dat=http://url typ=text/html }

没有能响应指定Intent的Activity,但是我手机查看订阅号的文章,点击右上角“在浏览器上打开”,是可以弹出选择浏览器的界面,正常的。

总共也就几段代码,我就分析了一下,然后找到了问题:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
   
    Button btnOpenBrowser = (Button) findViewById(R.id.btn_open_browser);
    btnOpenBrowser.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Log.i("meteoric", "click");
           
            String strUrl = "http://cdn.haowanyou.com/mobile/comm/gtqz/yhxy.html";
           
            Uri uri = Uri.parse(strUrl); 
           
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
           
            intent.setData(uri);
//          intent.setDataAndType(uri, "text/html");
           
            startActivity(intent);
        }
    });
}

被注释掉的代码就是产生crash的地方,改动的地方就是用setData替代setDataAndType方法。当指定MIME类型为text/html,没有Activity能响应。dat 后面有一个参数叫 typ,也就是没有Activity能捕捉到typ为text/html的那个Intent。

 

其实最好在startActivity的时候,能try catch一下,当指定的MIMIE类型为邮箱时,手机上没有安装邮箱客户端就会crash了。鉴于MIME的问题,我暂时只是去掉了type,公司测试组那边5.0以下的设备测试没有我这个问题,不确定是氢OS的问题,还是所有5.0系统都是如此,有兴趣的同学可以自行测试一下。

目录
相关文章
|
2月前
|
Web App开发 小程序 前端开发
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
【产品上新】小程序新内核来了!提升安卓浏览器性能,支持WebRTC
38 0
|
Shell Android开发
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
Android10.0(Q) 默认应用设置(电话、短信、浏览器、主屏幕应用)
624 0
|
6月前
|
域名解析 缓存 安全
图解域名解析成IP的全过程(你浏览器摁下一个网址后发生了啥?)
图解域名解析成IP的全过程(你浏览器摁下一个网址后发生了啥?)
106 0
|
9月前
|
Python
用python过滤某歌浏览器书签失效的网址
最近刚学习python,属于菜鸟级别的,于是打算写了个简单的书签过滤器,根据request模块请求,删除404的网址
46 0
|
9月前
|
数据采集 缓存 前端开发
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
漏刻有时数据可视化大屏常见问题(4)手机端数据采集ajax安卓手机安卓微信浏览器无法跳转的问题解决方案
78 0
|
移动开发 Java Android开发
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
1353 0
uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
|
JavaScript 前端开发 Android开发
JS(Javascript)调用Android原生方法三步走
JS(Javascript)调用Android原生方法三步走
465 0
|
Web App开发 存储 Java
android11.0(R) 谷歌浏览器去除短信分享功能
android11.0(R) 谷歌浏览器去除短信分享功能
146 0
|
安全 Android开发
android 浏览器 该网站的安全证书有问题
android 浏览器 该网站的安全证书有问题
209 0
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
57 0