package com.smartisanos.sidebar.util; import android.app.AppGlobals; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.os.UserHandle; public class LaunchApp { private static final LOG log = LOG.getInstance(LaunchApp.class); public static final String EXTRA_HAD_CHOOSE = "com.smartisanos.doppelganger.had_choose"; public static final String EXTRA_USER_ID = "com.smartisanos.userId"; public static final String INTENT_EXTRA_FOR_FLIP_ANIMATION = "intent_extra_for_flip_animation"; public static void start(Context context, Intent intent) { start(context, intent, false, null, 0); } public static void start(Context context, Intent intent, boolean checkDoppelganger, String pkg, int userId) { if (context == null) { return; } if (intent == null) { return; } boolean isDoppelganger = false; if (checkDoppelganger) { String packageName = pkg; if (packageName == null) { packageName = intent.getPackage(); } isDoppelganger = isAppInDoppelgangerStatus(context, packageName); } intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { if (!isDoppelganger) { context.startActivity(intent); } else { intent.putExtra(EXTRA_HAD_CHOOSE, true); intent.putExtra(EXTRA_USER_ID, userId); intent.putExtra(INTENT_EXTRA_FOR_FLIP_ANIMATION, false); //UserHandle.USER_DOPPELGANGER context.startActivityAsUser(intent, null, new UserHandle(userId)); } } catch (Exception e) { e.printStackTrace(); } } private static boolean isAppInDoppelgangerStatus(Context context, String pkg) { // if (pkg != null && context != null) { // try { // PackageInfo info = AppGlobals.getPackageManager().getPackageInfo(pkg, 0, UserHandle.USER_DOPPELGANGER); // if (info != null) { // return true; // } // } catch (Exception e) { // e.printStackTrace(); // } // } return false; } }