Android通知单击恢复活动
我的应用程序中有MainActivity和WorkActivity。由MainActivity启动的工作活动:Android通知单击恢复活动,android,android-activity,android-notifications,Android,Android Activity,Android Notifications,我的应用程序中有MainActivity和WorkActivity。由MainActivity启动的工作活动: Intent intent = new Intent(view.getContext(), WorkActivity.class); intent.putExtra("intArray", intArray); startActivity(intent); 在WorkActivity中,我读取intArray参数并启动前台服务并发出通知: protected void onCreat
Intent intent = new Intent(view.getContext(), WorkActivity.class);
intent.putExtra("intArray", intArray);
startActivity(intent);
在WorkActivity中,我读取intArray参数并启动前台服务并发出通知:
protected void onCreate(Bundle savedInstanceState) {
int[] intArray = getIntent().getIntArrayExtra("intArray");
Intent intent = new Intent(this, MyService.class);
intent.putExtra("intArray", intArray);
startService(intent);
}
Intent newIntent = new Intent(this, WorkActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, newIntent, 0);
Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("title)
.setContentIntent(pIntent)
.setContentText("text");
Notification notification;
notification = builder.build();
startForeground(1, notification);
服务通知:
protected void onCreate(Bundle savedInstanceState) {
int[] intArray = getIntent().getIntArrayExtra("intArray");
Intent intent = new Intent(this, MyService.class);
intent.putExtra("intArray", intArray);
startService(intent);
}
Intent newIntent = new Intent(this, WorkActivity.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, newIntent, 0);
Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("title)
.setContentIntent(pIntent)
.setContentText("text");
Notification notification;
notification = builder.build();
startForeground(1, notification);
现在,当我关闭我的应用程序并单击以通知发生错误时,因为WorkActivity无法获取
getIntent().getIntArrayExtra("intArray");
这应该由MainActivity传递。
如何解决这个问题
日志:
发生错误的原因是WorkActivity.getIntent().getIntArrayExtra(“intArray”)为空。
活动以行形式将此发送到服务:
intent.putExtra("intArray", intArray);
startService(intent);
在服务中,我需要从intArray获取一些数字,如intArray[0],但intArray为空当您转到通知栏并选择通知时,这将启动
WorkActivity
的新实例。WorkActivity
的此实例不是从您的main活动启动的,而是通过通知启动的,并且您在通知中输入的意图没有额外的数组
基本上,您需要将putExtra()
调用intArray
添加到此代码中:
Intent newIntent = new Intent(this, WorkActivity.class);
// HERE YOU NEED TO CALL newIntent.putExtra("intArray", intArray);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, newIntent, 0);
Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("title)
.setContentIntent(pIntent)
.setContentText("text");
请将您的日志添加到问题中。关于通过通知传递变量和对象,已经有很多信息了:非常感谢。工作活动具有线路启动服务(意图);当在通知单击后创建WorkActivity时,服务再次启动。如何避免这种情况?我不完全理解您的要求,但是如果您希望WorkActivity
知道它是从一个通知开始的(如果行为应该不同),您可以在通知中输入的意图
中添加另一个“额外”。然后,WorkActivity
可以检查这个“额外”来确定它是否是从通知启动的。好的,这就是我需要的。非常感谢。