武藤です。
以前にStackOverflowで見た方法です。というか裏ワザですね。
カラクリは、新しいHomeアプリを突っ込まれたとPackageManagerに
思わせて、Intent.CATEGORY_HOMEを投げるとうまいことHome chooser
が出てくるよ、というもの。お試しください。
AndroidManifest.xml
1 <!-- homeアプリ選択のために使う。実体はない。 -->
2 <activity
3 android:name=".activity.Settings.SettingsActivity$FakeHome"
4 android:enabled="false">
5 <intent-filter>
6 <action android:name="android.intent.action.MAIN" />
7 <category android:name="android.intent.category.HOME" />
8 <category android:name="android.intent.category.DEFAULT" />
9 </intent-filter>
10 </activity>
.activity.Settings.SettingsActivity.java
1 /**
2 * homeアプリ選択のために使う。実体はない.
3 * @author mutoh
4 *
5 */
6 public static class FakeHome extends Activity {
7 }
8
9
10 /**
11 * ニセのhomeアプリをenableすることで、homeアプリ選択画面を表示させる。
12 * @param c
13 */
14 public static void openHomeChooser(Context c) {
15 PackageManager p = c.getPackageManager();
16 ComponentName cN = new ComponentName(c, FakeHome.class);
17 p.setComponentEnabledSetting(cN,
18 PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
19 PackageManager.DONT_KILL_APP);
20
21 Intent selector = new Intent(Intent.ACTION_MAIN);
22 selector.addCategory(Intent.CATEGORY_HOME);
23 c.startActivity(selector);
24
25 p.setComponentEnabledSetting(cN,
26 PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
27 PackageManager.DONT_KILL_APP);
28 }