@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { PackageManager pm = getPackageManager(); ResolveInfo homeInfo = pm.resolveActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_HOME), 0); ActivityInfo ai = homeInfo.activityInfo; Intent startIntent = new Intent(Intent.ACTION_MAIN); startIntent.addCategory(Intent.CATEGORY_LAUNCHER); startIntent.setComponent(new ComponentName(ai.packageName, ai.name)); startActivitySafely(startIntent); return true; } return super.onKeyDown(keyCode, event); } private void startActivitySafely(Intent intent) { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(intent); } catch (ActivityNotFoundException e) { Toast.makeText(this, "没正常启动", Toast.LENGTH_SHORT).show(); } catch (SecurityException e) { Toast.makeText(this, "存在安全隐患", Toast.LENGTH_SHORT).show(); Log.e(MYLOG,"Launcher does not have the permission to launch " + intent + ". Make sure to create a MAIN intent-filter for the corresponding activity " + "or use the exported attribute for this activity.", e); } }
下面是在通知栏开启一个已经启动的Activity
public void createNotification() { // int icon = android.R.drawable.ic_menu_revert; int icon = R.drawable.icon; Notification notification = new Notification(icon, "", notificationId); notification.flags = Notification.FLAG_ONLY_ALERT_ONCE; notification.setLatestEventInfo(context, "", "", receiveIntent()); RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.app_notification_layout); notification.contentView = contentView; notfionMgr.notify(notificationId, notification); } private PendingIntent receiveIntent() { Intent appIntent = new Intent(Intent.ACTION_MAIN); appIntent.addCategory(Intent.CATEGORY_LAUNCHER); appIntent.setComponent(new ComponentName(context.getPackageName(), context.getPackageName() + "." + localClassName)); appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); appIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); appIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent contentIntent = PendingIntent.getActivity(context, notificationId, appIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Intent intent = new Intent(context, HomeActivity.class); //// intent.putExtra(NONE_START_APP, NONE); // intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); // PendingIntent contentIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT); return contentIntent; }