Android/ホームアプリ/ホーム画面選択表示
提供: 初心者エンジニアの簡易メモ
ホーム画面選択画面を表示
HomeappUtil.showHomeSelectDialog(getApplicationContext());
注意:デフォルトホームが設定されている場合は開かない。
ホームUtilサンプル
public class HomeappUtil { // デフォルトホーム取得 public static ComponentName getDefaultHome(Context context) { PackageManager packagemanager = context.getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); ResolveInfo resolveInfo = packagemanager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); ActivityInfo activityInfo = resolveInfo.activityInfo; return new ComponentName(activityInfo.packageName, activityInfo.name); } // デフォルトホーム名取得 public static String getDefaultHomeName(Context context) { PackageManager packagemanager = context.getPackageManager(); Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); ResolveInfo resolveInfo = packagemanager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY); ActivityInfo activityInfo = resolveInfo.activityInfo; //Log.v("","package name:"+activityInfo.packageName); //Log.v("","package name:"+activityInfo.name); //Log.v("","package name:"+activityInfo.loadLabel(pm).toString()); return activityInfo.name; } // ホームアプリを複数保有しているか判定 public static boolean hasMultipleHomeApp(Context context) { PackageManager packagemanager = context.getPackageManager(); Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.HOME"); List<ResolveInfo> list = packagemanager.queryIntentActivities(intent, Intent.FLAG_ACTIVITY_NO_ANIMATION); return list != null && list.size() >= 2; } // 現在のパッケージがデフォルトhomeアプリとして設定されている public static boolean isDefaultHomeSetThisPackage(Context context) { if (HomeappUtil.getDefaultHomeName(context).startsWith(context.getPackageName())) { return true; } return false; } // デフォルトhomeアプリが設定されている public static boolean isDefaultHomeSet(Context context) { return getDefaultHome(context) != null; } // デフォルト設定されいてるホームアプリのアプリ設定画面を開く public static void showApplicationDetailSetting(Context context) { String pname = getDefaultHome(context).getPackageName(); // Androidのバージョンで処理を分ける if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) { // Android 2.3以上 Intent intent = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS", Uri.parse((new StringBuilder("package:")).append(pname).toString())); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } else { // Android 2.2以下 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra("pkg", pname); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } // ホームアプリ選択画面を開く public static void showHomeSelectDialog(Context context) { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); context.startActivity(intent); } }