启动android默认浏览器

一、启动android默认浏览器

  Intent intent = new Intent();        
  intent.setAction("android.intent.action.VIEW");    
  Uri content_url = Uri.parse("http://www.cnblogs.com");   
  intent.setData(content_url);  
  startActivity(intent);

  这样子,android就可以调用起手机默认的浏览器访问。

  二、指定相应的浏览器访问

  1、指定android自带的浏览器访问
  (“com.android.browser”:packagename;“com.android.browser.BrowserActivity”:启动主activity)

  Intent intent = new Intent();        
  intent.setAction("android.intent.action.VIEW");    
  Uri content_url = Uri.parse("http://www.cnblogs.com");   
  intent.setData(content_url);           
  intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");   startActivity(intent);

  2、启动其他浏览器(当然该浏览器必须安装在机器上)
  只要修改以下相应的packagename 和 主启动activity即可调用其他浏览器

  intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");

  uc浏览器":"com.uc.browser", "com.uc.browser.ActivityUpdate“
  opera:"com.opera.mini.android", "com.opera.mini.android.Browser"
  qq浏览器:"com.tencent.mtt", "com.tencent.mtt.MainActivity"

  三、打开本地html文件
  打开本地的html文件的时候,一定要指定某个浏览器,而不能采用方式一来浏览,具体示例代码如下

  Intent intent = new Intent();
  intent.setAction("android.intent.action.VIEW");   
  Uri content_url = Uri.parse("content://com.android.htmlfileprovider/sdcard/help.html");  
  intent.setData(content_url);          
  intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");  
  startActivity(intent);

  关键点是调用了”content“这个filter。
  以前有在win32编程的朋友,可能会觉得用这种形式”file://sccard/help.html“是否可以,可以很肯定的跟你说,默认的浏览器设置是没有对”file“这个进行解析的,如果要让你的默认android浏览器有这个功能需要自己到android源码修改manifest.xml文件,然后自己编译浏览器代码生成相应的apk包来重新在机器上安装。

  大体的步骤如下:

  1、打开 packages/apps/Browser/AndroidManifest.xml文件把加到相应的<intent-filter>后面就可以了
  <intent-filter>
                  <action android:name="android.intent.action.VIEW" />
                  <category android:name="android.intent.category.DEFAULT" />
                  <category android:name="android.intent.category.BROWSABLE" />
                  <data android:scheme="file" />
              </intent-filter>

  2、重新编译打包,安装,这样子,新的浏览器就支持”file“这个形式了。

<think>好的,我现在需要解决用户在Android设备上设置默认浏览器或通过程序调用浏览器的问题。首先,用户的问题有两个部分:如何设置默认浏览器和如何以编程方式打开浏览器。 关于设置默认浏览器,我记得Android系统通常会让用户自己选择默认应用。所以当用户安装多个浏览器时,系统会提示用户选择默认浏览器。开发者无法直接通过代码设置默认浏览器,因为这涉及到用户的选择权,应用没有权限修改这个设置。不过,可以引导用户进入系统设置页面,让用户手动更改默认应用。例如,通过Intent打开系统设置的默认应用部分。需要确认正确的Intent动作是什么,可能是`ACTION_MANAGE_DEFAULT_APPS_SETTINGS`。 然后是编程方式打开浏览器。这部分应该相对简单,使用Intent.ACTION_VIEW并指定一个URL,然后启动Activity。但需要考虑是否有已安装的浏览器应用,所以需要处理异常情况,比如没有浏览器时捕获ActivityNotFoundException。同时,可能需要使用`Intent.createChooser()`来让用户选择使用哪个浏览器打开链接,特别是当用户没有设置默认浏览器时。 接下来需要验证这些方法是否正确。比如,设置默认浏览器部分,官方文档是否有说明应用无法直接设置默认,只能引导用户到设置页面。对于打开浏览器,标准的做法确实是使用ACTION_VIEW加上Uri,然后启动Activity。还需要注意权限问题,是否需要声明某些权限,但一般来说,打开浏览器不需要特殊权限。 另外,用户提供的引用内容中提到Android 6.0及以上移除了全局书签的权限,但这个问题主要涉及打开浏览器和设置默认浏览器,可能不直接相关。不过需要确保代码示例符合最新的API要求,比如使用正确的Intent方式,不依赖已被移除的方法。 可能还需要考虑不同Android版本之间的差异。例如,ACTION_MANAGE_DEFAULT_APPS_SETTINGS在较新的版本中是否存在,或者是否有兼容性问题。需要查阅最新的文档确认。 最后,生成相关问题时要涵盖用户可能进一步想了解的内容,比如处理没有浏览器的情况、如何检测当前默认浏览器、或者如何让应用支持设置为默认浏览器等。</think>在Android设备上,设置默认浏览器需要用户手动操作,而通过代码调用浏览器可以使用Intent实现。以下是具体方法: ### 一、设置默认浏览器(需用户手动操作) 1. **引导用户到系统设置页面**: ```java Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS); startActivity(intent); ``` 这会打开系统默认应用设置界面,用户可在此选择浏览器应用作为默认[^1]。 ### 二、以编程方式打开浏览器 1. **基础调用方式**: ```java Uri uri = Uri.parse("https://www.example.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { // 处理无浏览器应用的情况 } ``` 2. **强制显示浏览器选择弹窗**: ```java Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com")); Intent chooser = Intent.createChooser(intent, "选择浏览器"); startActivity(chooser); ``` ### 关键注意事项: 1.Android 6.0(API 23)起,不再支持直接访问全局书签,应使用应用内部存储处理书签数据[^2] 2. 需要添加网络权限: ```xml <uses-permission android:name="android.permission.INTERNET"/> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值