public class MainActivity extends Activity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); PackageManager packageManager = this.getPackageManager(); 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("com.UCMobile", "com.UCMobile.main.UCMobile"); Intent intent = new Intent(str3); intent.addCategory(str2); intent.addCategory(str1); Uri uri = Uri.parse("http://"); intent.setDataAndType(uri, null); // 找出手机当前安装的所有浏览器程序 List<ResolveInfo> resolveInfoList = packageManager .queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS); 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); // 清除之前的默认设置 packageManager.clearPackagePreferredActivities(packageName); ComponentName componentName = new ComponentName(packageName, className); arrayOfComponentName[i] = componentName; } packageManager.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_SCHEME, arrayOfComponentName, component); }
记得 <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" /> 及系统签名噢