zoukankan      html  css  js  c++  java
  • Android调用浏览器打开网址遇到的问题

    我自己的手机(一加一代,升级了氢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系统都是如此,有兴趣的同学可以自行测试一下。

  • 相关阅读:
    1.23学习总结:文件流
    vue-router重写push方法,解决相同路径跳转报错,解决点击菜单栏打开外部链接
    手把手教Electron+vue,打包vue项目,打包成桌面程序。
    后台获取的map集合封装json
    VUE同级组件之前方法调用
    字节跳动今日头条-抖音小程序序html富文本显示解决办法
    别总写代码,这130个网站比涨工资都重要
    vue 组件之间的自定义方法互相调用
    swiper轮播图出现疯狂抖动(小程序)
    vue通过地址下载文件
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/4846160.html
Copyright © 2011-2022 走看看