Android/ホームアプリ/ホーム画面選択表示
提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 02:58時点における127.0.0.1 (トーク)による版 (ページの作成:「==ホーム画面選択画面を表示== HomeappUtil.showHomeSelectDialog(getApplicationContext()); 注意:デフォルトホームが設定されている場合は開...」)
ホーム画面選択画面を表示
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);
}
}
