皆様、貴重な情報ありがとうございました。
この情報を元にサンプルとして簡単なブラウザアプリ(MyApp)を作成してデフォルトブラウザの設定、解除が出来るか試してみました。
#デフォルトの解除は以下のコードで出来ました
PackageManager packages = getPackageManager();
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(),
MyApp.class.getName());
packages.clearPackagePreferredActivities(context.getPackageName());
#でもデフォルトの設定は以下のコードではなぜか上手く行かなかったです(エラーは発生しないのですが、デフォルト設定されません)
PackageManager packages = getPackageManager();
Context context = getApplicationContext();
ComponentName component = new ComponentName(context.getPackageName(),
MyApp.class.getName());
IntentFilter filter = new IntentFilter("android.intent.action.VIEW");
filter.addCategory("android.intent.category.DEFAULT");
filter.addCategory("android.intent.category.BROWSABLE");
filter.addDataScheme("http");
filter.addDataScheme("https");
filter.addDataScheme("about");
ComponentName[] components = new ComponentName[] {
new ComponentName(context.getPackageName(), MyApp.class.getName())
};
packages.addPreferredActivity(filter,
IntentFilter.MATCH_CATEGORY_EMPTY, components, component);
#作成したアプリのマニフェスト
<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="http" />
<data android:scheme="https" />
<data android:scheme="about" />
</intent-filter>
<uses-permission
android:name="android.permission.SET_PREFERRED_APPLICATIONS"></uses-
permission>