package cm.android.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.support.v4.content.LocalBroadcastManager;
import android.webkit.MimeTypeMap;
import java.io.File;
import cm.java.util.Utils;
/**
* 封装了一些Intent操作
*/
public class IntentUtil {
private static final Logger logger = LoggerFactory.getLogger(IntentUtil.class);
// private static Context sContext = StoreApp.getApp();
//
// public static void sendIntent(Class<?> cls, Bundle bundle, int flags) {
// Intent intent = new Intent(sContext, cls);
// if (null != bundle) {
// intent.putExtras(bundle);
// }
// // intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// // intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
// // intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
// // intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// intent.addFlags(flags);
// sContext.startActivity(intent);
// }
/**
* 打开一个应用
*/
public static boolean launchApp(Context context, String packageName) {
try {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if (null != intent) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
return true;
}
} catch (Exception e) {
logger.error("packageName = " + packageName, e);
}
return false;
}
// public static void startActivitySafely(Activity activity, Intent intent) {
// try {
// activity.startActivity(intent);
// } catch (ActivityNotFoundException e) {
// logger.error("intent = " + intent, e);
// } catch (SecurityException e) {
// logger.error("intent = " + intent, e);
// }
// }
public static void startActivitySafely(Context context, Intent intent) {
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
logger.error("intent = " + intent, e);
} catch (SecurityException e) {
logger.error("intent = " + intent, e);
}
}
/**
* 发送安装请求,调用系统安装界面
*/
public static boolean installPackage(Context context, Uri packageURI) {
File file = new File(packageURI.getPath());
if (!file.exists() || !file.isFile() || file.length() <= 0) {
return false;
}
Intent apkintent = new Intent(Intent.ACTION_VIEW);
String type = "application/vnd.android.package-archive";
if (Build.VERSION.SDK_INT >= 23) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension("apk");
}
apkintent.setDataAndType(packageURI, type);
apkintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
apkintent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
context.startActivity(apkintent);
return true;
}
/**
* 发送卸载应用请求,调用系统卸载界面
*/
public static boolean deletePackage(Context context, String packageName) {
if (Utils.isEmpty(packageName)) {
return false;
}
Uri packageURI = Uri.parse("package:" + packageName);
Intent apkintent = new Intent(Intent.ACTION_DELETE, packageURI);
apkintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
apkintent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
context.startActivity(apkintent);
return true;
}
public static void sendBroadcastInternal(Context context, Intent intent) {
intent.setPackage(context.getPackageName());
context.sendBroadcast(intent);
}
public static void sendBroadcastLocal(Context context, Intent intent) {
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}
public static void sendBroadcastSyncLocal(Context context, Intent intent) {
LocalBroadcastManager.getInstance(context).sendBroadcastSync(intent);
}
public static void sendBroadcastInternal(Context context, Intent intent, String permission) {
intent.setPackage(context.getPackageName());
context.sendBroadcast(intent, permission);
}
}