NullPointerException从intent上获取额外的接收器时。仅适用于华为设备

时间:2015-12-11 12:31:27

标签: java android nullpointerexception

我在我的应用中找到了我的bugtracker奇怪的NullPointerException。有趣的部分是它只出现在华为设备上(Honor 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);
    }
}

所以我运行AlarmManager来调用TestReceiver,如下所示:

public class TestReceiver extends BroadcastReceiver {

private static final String TAG = TestReceiver.class.getName();

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Constants.action1)) {
            User text = intent.getParcelableExtra(Constants.contant1);
            Log.d(TAG, text.getName());
        }
    }
}

它所做的只是记录用户名。我们在这里。在我的华为Honor 7上它与NullPointerException崩溃,但在我的其他设备上运行正常(在Nexus 5,三星Galaxy S3,HTC One,LG G2 Mini上测试)。我与用户实现Serializable和Parcelable。没有帮助。但是当我添加String额外的或其他任何内容时,代码会在华为运行。

有人遇到了我现在面临的同样问题吗?

1 个答案:

答案 0 :(得分:0)

您可以使用

String st = "<form>
                  First name:<br>
                  <input type="text" name="firstname">
                  <br>
                  Last name:<br>
                  <input type="text" name="lastname">
             </form>"