您的位置:首页 > 移动开发 > Android开发

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”;

// 设置默认项的必须参数之一,用户的操作符合该过滤器时,默认设置起效
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);


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: