Java 从接收器上的意图中获取额外信息时发生NullPointerException。仅在华为设备上
我在我的应用程序中的bugtracker上发现奇怪的Java 从接收器上的意图中获取额外信息时发生NullPointerException。仅在华为设备上,java,android,nullpointerexception,Java,Android,Nullpointerexception,我在我的应用程序中的bugtracker上发现奇怪的NullPointerException。相互测试部分是,它只发生在华为设备上(荣誉7和P8 Lite) 所以我运行了一些测试代码来检查这些设备是否真的存在问题 以下是启动AlarmManager的代码: final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); final Intent intent = new I
NullPointerException
。相互测试部分是,它只发生在华为设备上(荣誉7和P8 Lite)
所以我运行了一些测试代码来检查这些设备是否真的存在问题
以下是启动AlarmManager的代码:
final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
final Intent intent = new Intent(this, TestReceiver.class);
intent.putExtra(Constants.contant1, new User("John"));
intent.setAction(Constants.action1);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 4882, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
if (Build.VERSION.SDK_INT < 19) {
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pendingIntent);
} else {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pendingIntent);
}
}
它所做的只是记录用户名。我们到了。在我的华为荣誉7上,它因NullPointerException
而崩溃,但在我的其他设备上运行正常(在Nexus 5、三星Galaxy S3、HTC One、LG G2 Mini上测试)。我尝试使用用户实现Serializable和Parcelable。没有帮助。但当我把String
extra或其他任何东西放进去时,代码在华为上运行
有人和我现在面临的问题一样吗?你可以使用
if(intent.hasExtra(Constants.contant1)){
User text = intent.getParcelableExtra(Constants.contant1);
Log.d(TAG, text.getName());
}
这段代码只是一个例子。生产中的我的应用程序向用户提供有关其事件的通知。所以不,我不能用这个,因为华为用户不会收到他们的通知。你解决了这个问题吗?我在华为P9Well上也遇到了同样的问题,我有我的用户对象,所以我没有将用户传递给intent,而是传递了他的ID(不知怎么回事,字符串、整数、long和任何其他有效),然后在获得ID后从数据库加载用户。丑陋的hack,但有效。同样,只传递了基本类型
if(intent.hasExtra(Constants.contant1)){
User text = intent.getParcelableExtra(Constants.contant1);
Log.d(TAG, text.getName());
}