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

Android调用浏览器打开网址遇到的问题的更多相关文章

  1. c# 调用浏览器打开网址并全屏

    关键性参数 Google Chrome浏览器 Process process = Process.Start("chrome.exe", " --kiosk " ...

  2. IE11,Chrome65,Firefox58 的webdriver驱动下载,调用浏览器打开网址

    一.环境及需求 1.1环境 Windows10 + Python 3.6.4 + selenium 3.141 1.2需求 工作需要实现一个网页自动登录的操作,决定使用selenium+python实 ...

  3. C# 调用浏览器打开网址

    private void button1_Click(object sender, EventArgs e) { //调用系统默认的浏览器 System.Diagnostics.Process.Sta ...

  4. cocos2dx调用浏览器打开网址

    安卓端cocos2dx/platform/android路径下CCApplication.h: virtual void openURL(const char* pszUrl); CCApplicat ...

  5. Android 调用浏览器和嵌入网页

    Android App开发时由于布局相对麻烦,很多时候一个App通常是由html5和原生控件相结合而成.简单的网页应用可以直接内嵌html5页面即可,对于需要调用复杂的底层功能时则采用原生控件的方式进 ...

  6. C# winform调用浏览器打开页面方法分享,希望对大家有帮助

    在很多客户端程序中我们都需要调用浏览器打开网页,这里分享一个可以在我winform程序调用浏览器的方法,测试通过了. 声明:这个方法是上万个用户测试通过的,不是我没有测试通过就拿出来分享,那个是自己搬 ...

  7. C#使用浏览器打开网址

    使用指定浏览器打开网址: System.Diagnostics.Process.Start("360chrome.exe", "http://converter.tele ...

  8. Android调用默认浏览器打开指定Url

    业务员有需求要将一个wap站在手机上以App的形式打开,还不要嵌套WebView,只能以浏览器打开.查了点资料,就有了下面这货. package com.gzz.whyinzi; import and ...

  9. apiCloud app调用浏览器打开网页的方法

    在APP调用浏览器有两种方法:1.使用openApp2.使用openWin 两种方法调用浏览器后的效果有一点不同:1.使用openApp调用浏览器后,如果手机内有多个浏览器,会首先弹出选择浏览器的框2 ...

随机推荐

  1. ue4 SNew补遗

    上一篇分析了SNew背后的实现,但是有一个关键问题遗漏了,那就是: #define SNew( WidgetType, ... ) \ MakeTDecl<WidgetType>( #Wi ...

  2. live555 直播arm-linux视频

    live555例程testOnDemandRTSPServer.cpp启动一个流服务器 首先启动使用环境, TaskScheduler* scheduler = BasicTaskScheduler: ...

  3. SpringMVC与ajax相关知识练习与存档

    参考文章(亲测有效): SpringMVC+ajax返回JSON串 jquery ajax例子返回值详解 AJAX $.ajax({url:路径,date:数据,}) //get请求(指定回调函数,参 ...

  4. 搭建三层架构(ASP.NET MVC+EF)

    昨天面试的时候最后做了一道上机题,竟然跪了,跪就跪在没有搭好框架,连接数据库总是程序报错. 回来之后亲自搭了一下框架,弄好后放到博客上.下图就是搭建好后,整个框架的结构就是这样,下面对框架中的文件进行 ...

  5. P1147连续自然数和

    洛谷1147 连续自然数和 题目描述 对一个给定的自然数M,求出所有的连续的自然数段,这些连续的自然数段中的全部数之和为M. 例子:1998+1999+2000+2001+2002 = 10000,所 ...

  6. MVC之MVC是什么?

    Asp.net MVC是一个非常优秀的开源的web网站开发框架要学习mvc首先你要回以下这些技能.C#. ADO.Net.(LinQ) html. javascript. ASP.Net WebFor ...

  7. sqlplus启动后的环境SQLPATH的设置

    sqlplus启动时会查找和加载的两个文件login.sql和glogin.sql.其中glogin.sql文件默认存放在$ORACLE_HOME/sqlplus/admin目录下,login.sql ...

  8. 【概念笔记】 EL表达式

    一.EL简介 1.语法结构  ${expression} 2.[]与.运算符  EL 提供.和[]两种运算符来存取数据. 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要 ...

  9. Lzlib 1.5 正式发布,C 语言压缩算法库

    Lzlib 1.5 正式发布,该版本移除了对废弃版本 0 文件的解压支持:修复了 struct LZ_Encoder 和 LZ_compress_sync_flush 相关的 bug. Lzlib 压 ...

  10. azure存储压测的问题(农码主观意识太强被坑了)

    由于公司想把部份业务迁到windowsazure,主要是应用winodwsazure的存储;在方案中为了体现存储的可靠性所以对winodwsazure存储进行了一系列的测试.但在读取压力测试环节中发现 ...