Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从接收器上的意图中获取额外信息时发生NullPointerException。仅在华为设备上_Java_Android_Nullpointerexception - Fatal编程技术网

Java 从接收器上的意图中获取额外信息时发生NullPointerException。仅在华为设备上

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

我在我的应用程序中的bugtracker上发现奇怪的
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());
}