我的应用程序有一个显示推送通知的服务,我需要根据收到的数据类型触发不同的通知,为此我创建了3个通知功能。
问题在于如何触发这些通知,我正在使用它:
String salaId = "";
String message = "";
String quien = "";
String iduser = "";
String link = "";
String img = "";
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Mensaje recibido");
message = intent.getExtras().getString("message");
quien = intent.getExtras().getString("quien");
salaId = intent.getExtras().getString("sala");
iduser = intent.getExtras().getString("iduser");
img = intent.getExtras().getString("foto");
link = intent.getExtras().getString("link");
if (salaId != null || !salaId.equals("") && img != null || !img.equals("")) {
generateNotification(context, message, quien, salaId, iduser, img);
}
if (link != null || !link.equals("")) {
generateNotification2(context, message, quien, link);
}
if (link == null || link.equals("") && salaId == null || salaId.equals("") && img == null || img.equals("")) {
generateNotification3(context, message, quien);
}
}
但是当试图选择正确的功能时应用程序就死了:
04-30 01:47:10.716: E/AndroidRuntime(15106): FATAL EXCEPTION: IntentService[GCMIntentService-712601586692-2]
04-30 01:47:10.716: E/AndroidRuntime(15106): java.lang.NullPointerException
04-30 01:47:10.716: E/AndroidRuntime(15106): at com.gettford.community.GCMIntentService.onMessage(GCMIntentService.java:72)
04-30 01:47:10.716: E/AndroidRuntime(15106): at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223)
04-30 01:47:10.716: E/AndroidRuntime(15106): at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
04-30 01:47:10.716: E/AndroidRuntime(15106): at android.os.Handler.dispatchMessage(Handler.java:99)
04-30 01:47:10.716: E/AndroidRuntime(15106): at android.os.Looper.loop(Looper.java:130)
04-30 01:47:10.716: E/AndroidRuntime(15106): at android.os.HandlerThread.run(HandlerThread.java:60)
第72行是这段代码:
if (salaId != null || !salaId.equals("") && img != null || !img.equals("")) {
答案 0 :(得分:1)
你说第72行包含这段代码:
if (salaId != null || !salaId.equals("") && img != null || !img.equals(""))
如果是,则salaId
或img
为null
。在条件中使用TextUtils.isEmpty()
来处理空和空案例:
if (!TextUtils.isEmpty(salaId) && !TextUtils.isEmpty(img))
答案 1 :(得分:1)
请确保使用generateNotification()
方法检查所有字符串的空值,如下所示:
尝试使用TextUtils.isEmpty()
方法,如果字符串为null或0,则返回true或false。试试如下:
if (!TextUtils.isEmpty(salaId) && !TextUtils.isEmpty(img) || !TextUtils.isEmpty(message) || !TextUtils.isEmpty(quien) || !TextUtils.isEmpty(iduser) ) {
generateNotification(context, message, quien, salaId, iduser, img);
}
希望这会对你有所帮助。