facebook twitter hatena line google mixi email

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);
 }
}