我正在尝试将可序列化的对象发送到挂起的Intent。问题是接收到的警报返回为空。即使Alarm实现了可序列化的接口。
//AlarmService.java
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
Bundle bundle = new Bundle();
bundle.putSerializable("alarm", alarm);
myIntent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarm.getAlarmTime().getTimeInMillis(), pendingIntent);
收到的警报为空。
//AlarmAlertBroadcastReceiver.java
public class AlarmAlertBroadcastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Alarm alarm = (Alarm)intent.getExtras().getSerializable("alarm");
}
}
编辑:我尝试过的一些其他操作如下,但它似乎不起作用:
//AlarmService.java
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
myIntent.putExtra("alarm", alarm);
myIntent.setAction("abc.xyz");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarm.getAlarmTime().getTimeInMillis(), pendingIntent);
收到的警报为空。
//AlarmAlertBroadcastReceiver.java
public class AlarmAlertBroadcastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Alarm alarm = (Alarm)intent.getExtras().getSerializable("alarm");
//Alarm alarm = (Alarm)intent.getSerializableExtra("alarm");
}
}
我正在使用android Nougat,所以这些答案都没有奏效。我最终将对象传递到字节数组中。
//AlarmService.java
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(alarm);
out.flush();
byte[] data = bos.toByteArray();
myIntent.putExtra("alarm", data);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarm.getAlarmTime().getTimeInMillis(), pendingIntent);
然后我收到了Byte []
//AlarmAlertBroadcastReceiver.java
@Override
public void onReceive(Context context, Intent intent) {
ByteArrayInputStream bis = new ByteArrayInputStream(intent.getByteArrayExtra("alarm"));
ObjectInput in = null;
Alarm alarm = null;
try {
in = new ObjectInputStream(bis);
alarm = (Alarm)in.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
问题内容: 我有一些来自Android市场的崩溃报告日志,如下所示: 请注意,我使用的是proguard->这就是为什么“缺少”的类名是“ a.ae”的原因。 实际上,“ a.ae”是proguard赋予类“ MyObject”的名称,如下所示。 为什么会发生这种想法? 我认为这与proguard无关,因为如果这是由proguard类重命名引起的问题,它应该一直存在,并且我可以自己重现此问题。 它
我正在为一个应用程序使用Apache骆驼和Spring启动。我需要从目录中读取,然后散集xml读取,然后处理未编组的对象以在其中设置更多数据,然后再次列表并将其发送到不同的文件夹。我使用以下路由。请告诉我在解组到处理器后如何发送POJO。目前默认情况下,它是进入处理器的交换。
问题内容: 我正在尝试将自定义对象从活动传递到片段。我选择实现可序列化并使用以下对象传递对象: 我遇到了错误 尝试在空对象引用上调用虚拟方法 当我尝试将我的对象设置为与活动传递的参数相等时。 这是我的对象 接下来是我要传递的活动,我最终希望传递所有四个对象,但是现在我想至少获得一个成功传递的对象。 然后是引发Null Pointer Exception的片段,我已经用“->”包com.cs246.
问题内容: 我正在尝试将自定义对象从活动传递到片段。我选择实现可序列化并使用以下对象传递对象: 我遇到了错误 尝试在空对象引用上调用虚拟方法 当我尝试将我的对象设置为与活动传递的参数相等时。 这是我的对象 接下来是我要传递的活动,我最终希望传递所有四个对象,但是现在我想至少获得一个成功传递的对象。 然后是引发Null Pointer Exception的片段,我已经用“->”包com.cs246.
问题内容: 我正在使用,在网上找到了几个示例。我设法创建此代码以发出请求: 一切正常。但是假设我想将第三个参数传递给该方法,则该参数称为。数据参数是这样的对象: 没有创建该怎么办?我的PHP 等待json输入,因此应该正确发送json。但是我该怎么做呢?谢谢。 问题答案: 您问题的直接答案是:否。方法的签名如下: 公共任务PostAsync(Uri requestUri,HttpContent内容
我需要在rmi服务器中调用一个方法,并从客户端将一个序列化对象传递给该方法,但该对象的类对于服务器来说是未知的