BroadcaseReceiver中(後臺)啟動Activity

rogera發表於2018-01-08

在後臺比如BroadcaseReceiver service中啟動Activity 需要注意一下幾點

1.Intent Flag.

Intent intent = new Intent(); intent.setClassName(context, "class name"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

2. 許可權,任何在後臺startActivity 的操作都將會延遲 5 秒

注:系統應用才有許可權新增 在 AndroidManifest.xml 中新增 "android.permission.STOP_APP_SWITCHES" 許可權;

對於非系統應用,StackOverFlow 有如下解決方案

Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
複製程式碼

改為

Intent intent = new Intent(context, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
try {
  pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
  e.printStackTrace();
}
複製程式碼
[stackoverflow參考:](https://stackoverflow.com/questions/5600084/starting-an-activity-from-a-service-after-home-button-pressed-without-the-5-seco)複製程式碼

相關文章