Android修改默認浏覽器為其他浏覽器(UC)
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" /> 及系統簽名噢
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11