android 修改默认浏览器
2016-09-18 11:10
357 查看
[QUESTION]
预置了两个浏览器,需要在开机时设置一个缺省的浏览器,怎样修改?
[ANSWER]
如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。
修改方法是设置默认程序使用packageManager.addPreferredActivity()
请在frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java中的systemReady函数的最后中增加以下代码。
if (isFirstBoot())
{
String str1 = “android.intent.category.DEFAULT”;
String str2 = “android.intent.category.BROWSABLE”;
String str3 = “android.intent.action.VIEW”;
}
预置了两个浏览器,需要在开机时设置一个缺省的浏览器,怎样修改?
[ANSWER]
如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接。
修改方法是设置默认程序使用packageManager.addPreferredActivity()
请在frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java中的systemReady函数的最后中增加以下代码。
if (isFirstBoot())
{
String str1 = “android.intent.category.DEFAULT”;
String str2 = “android.intent.category.BROWSABLE”;
String str3 = “android.intent.action.VIEW”;
// 设置默认项的必须参数之一,用户的操作符合该过滤器时,默认设置起效 IntentFilter filter = new IntentFilter(str3); filter.addCategory(str1); filter.addCategory(str2); filter.addDataScheme("http"); //设置浏览页面用的Activity ComponentName component = new ComponentName(context.getPackageName(), BrowserActivity.class.getName()); Intent intent = new Intent(str3); intent.addCategory(str2); intent.addCategory(str1); Uri uri = Uri.parse("http://"); intent.setDataAndType(uri, null); // 找出手机当前安装的所有浏览器程序 int callingUserId = UserHandle.getCallingUserId(); List<ResolveInfo> resolveInfoList = queryIntentActivities(intent, null, PackageManager.GET_INTENT_FILTERS, callingUserId); int size = resolveInfoList.size(); ComponentName[] arrayOfComponentName = new ComponentName[size]; for (int i = 0; i < size; i++) { ActivityInfo activityInfo = resolveInfoList.get(i).activityInfo; String packageName = activityInfo.packageName; String className = activityInfo.name; Log.d(TAG, "packageName " + packageName); Log.d(TAG, "className " + className); // 清除之前的默认设置 clearPackagePreferredActivities(packageName); ComponentName componentName = new ComponentName(packageName, className); arrayOfComponentName[i] = componentName; } addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName, component, callingUserId);
}
相关文章推荐
- Android中AsyncTask的使用
- Android系统获取应用的Crash信息,保存在本地(可以自己实现上传到自己的服务器)
- android-Ultra-Pull-To-Refresh源码分析
- Android 定制多边形View和View的拖动与抛掷效果
- android错误:Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
- Can't use Subversion command line client:svn 报错处理
- 安卓视频播放器 一行代码快速实现在线视频播放,Android视频播放,AndroidMP3播放,安卓视频播放一行代码搞定
- Android游戏开发之2048游戏简单实现
- Android N(7.0)中的Vulkan支持
- Android 之 Handler 用法总结
- Android热修复AndFix混淆后热修复失败,无效
- Android优质技术资源合集
- ButterKnife java.lang.ClassCastException: android.view.View cannot be cast to android.app.Activity
- Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- Android.mk简单分析
- ubuntu 14.10 编译 android 4.4kitkat
- Android Dialog、Toast和Snackbar详解
- android 页面自适应布局实践
- Android string.xml中使用html标签
- CheckBox