Intent intent = new Intent(getApplicationContext(), ResultActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivities(context, 0,
new Intent[]{new Intent(context, CallHomeAfterFinishActivity.class), intent},
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder n = new NotificationCompat.Builder(context)
.setContentIntent(pendingIntent)
...
NotificationManagerCompat.from(getApplicationContext()).notify(12345, n.build());
열어야 할 화면 말고 mainactivity가 떠있는지 검사할 화면을 하나 더 띄운 다음에,
public static boolean isMainActivityRunning() {
try {
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasksInfo = activityManager.getRunningTasks(Integer.MAX_VALUE);
if (tasksInfo == null) { return false; }
for (ActivityManager.RunningTaskInfo taskInfo : tasksInfo) {
if (taskInfo.baseActivity.getClassName().equals(MainActivity.class.getCanonicalName())) { return true; }
}
} catch (Exception e) {}
return false;
}
mainactivity 가 떠 있는지 검사할 함수를 추가해서
public class CallHomeAfterFinishActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (!SystemUtil.isMainActivityRunning()) {
startActivity(new Intent(getApplicationContext(), MainActivity.class));
}
finish();
}
}
안 떠 있으면 띄우고 자신은 죽는 걸로 해결했습니다.