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,但是我手机查看订阅号的文章,点击右上角“在浏览器上打开”,是可以弹出选择浏览器的界面,正常的。

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

@Overrideprotected 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系统都是如此,有兴趣的同学可以自行测试一下。

时间: 2024-08-06 09:07:25

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

C# 调用浏览器打开网址

private void button1_Click(object sender, EventArgs e) { //调用系统默认的浏览器 System.Diagnostics.Process.Start(http://www.baidu.com); }

从浏览器打开网址到请求到网页内容超细原理过程详解(免费)

从浏览器打开网址到请求到网页内容超细原理过程详解 史上最牛逼相关知识学员讲解! 看完了不服来战! http://edu.51cto.com/course/course_id-6075.html 长江后浪来了...100米高大浪! 最牛逼老男孩教育28期学员开班2个月左右的分享讲解,不看不知道,一看吓尿你! 运维Q群385168604 架构师Q群390642196 PythonQ群29215534大数据Q群421358633

Java Swing中使用浏览器打开网址

使用浏览器打开网址 /////////////////////////////////////////////////////////     //  Bare Bones Browser Launch                          //     //  Version 3.1 (June 6, 2010)                         //     //  By Dem Pilafian                                   

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

在很多客户端程序中我们都需要调用浏览器打开网页,这里分享一个可以在我winform程序调用浏览器的方法,测试通过了. 下载查看demo 看演示图 1.调用谷歌浏览器打开网页(打开百度) 2.调用IE打开页面(打开百度) 3.调用用户默认设置的浏览器打开百度页面 测试都是通过的,有些电脑因为没有安装IE浏览器特别是一些Ghost系统,导致IE打开不成功,这里我建议大家可以调用谷歌浏览器,因为比较这是现在最主流的浏览器之一,谷歌没有就打开系统默认的,实在不行就打开IE. 项目测试中,还真有一些客户的

java调用浏览器打开链接代码

调用IE浏览器打开链接URL:Runtime.getRuntime().exec("cmd /c start iexplore http://www.baidu.com/"); 或 ProcessBuilder builder = new ProcessBuilder( "c:\\Program Files\\Internet Explorer\\iexplore", "http://www.baidu.com"); builder.start(

c#调用默认浏览器打开网址的方法

一. private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件路径 RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\"); string s = key.GetValue("").ToString(); //s就是你的默认浏览器,不过后面带了参数,把它截去,不过需要注意

C#调用浏览器打开网页

从注册表中读取默认浏览器可执行文件路径 private void button1_Click(object sender, EventArgs e) { //从注册表中读取默认浏览器可执行文件路径 RegistryKey key = Registry.ClassesRoot.OpenSubKey(@"http\shell\open\command\"); string s = key.GetValue("").ToString(); //s就是你的默认浏览器,不过后

让UILabel具有链接功能,点击后调用safari打开网址

UILabel *labelGovUrl = [[UILabel alloc] initWithFrame:CGRectMake(73.0, 330.0, 180.0, 40.0)]; labelGovUrl.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight); labelGovUrl.text = @"appStore"; labelGovUrl.backgroun

java 调用浏览器打开页面

public static void openURL(String url) { try { browse(url); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error attempting to launch web browser:\n" + e.getLocalizedMessage()); } } private static void browse(String url) throws Cla