Java GCM致命异常错误

Java GCM致命异常错误,java,android,google-cloud-messaging,Java,Android,Google Cloud Messaging,我的android应用程序抛出错误,已经在线搜索了,但仍然不明白错误是什么!,谢谢你的帮助 03-14 15:46:02.760: E/AndroidRuntime(5163): FATAL EXCEPTION: IntentService[GCMIntentService-DynamicSenderIds-3] 03-14 15:46:02.760: E/AndroidRuntime(5163): java.lang.ArrayIndexOutOfBoundsException: leng

我的android应用程序抛出错误,已经在线搜索了,但仍然不明白错误是什么!,谢谢你的帮助

 03-14 15:46:02.760: E/AndroidRuntime(5163): FATAL EXCEPTION: IntentService[GCMIntentService-DynamicSenderIds-3]
 03-14 15:46:02.760: E/AndroidRuntime(5163): java.lang.ArrayIndexOutOfBoundsException: length=2; index=3
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at com.Test.Messaging.GCMIntentService.onMessage(GCMIntentService.java:43)
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at com.google.android.gcm.GCMBaseIntentService.onHandleIntent(GCMBaseIntentService.java:223)
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at android.os.Handler.dispatchMessage(Handler.java:99)
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at android.os.Looper.loop(Looper.java:176)
 03-14 15:46:02.760: E/AndroidRuntime(5163):    at android.os.HandlerThread.run(HandlerThread.java:61)
我的GCMinentService类在其中引发异常:

protected void onMessage(Context context, Intent intent) {                      
    Log.i(TAG, "Recieved");
    String message = intent.getExtras().getString("price");                         
    String oo[] = message.split("-");                                           

    String kk = "R";
    String msg = oo[3];
    String che = oo[2];
    see = oo[1];

    if (kk.equals(oo[0])) {                 

        RandomMsg.test = msg;
        RandomMsg.pool= see;
    } else {


    display(context, message);                  
}
}

之所以生成此问题,是因为
oo[]
数组仅包含2个值。在调用oo[index]之前,必须检查数组长度。您可以更新您的方法,如下所示:

protected void onMessage(Context context, Intent intent) {                      
    Log.i(TAG, "Recieved");
    String message = intent.getExtras().getString("price");                         
    String oo[] = message.split("-");                                           
    int length = oo.length;
    String kk = "R";
    String msg = length > 3 ? oo[3] : "";
    String che = length > 2 ? oo[2] : "";
    see = length >1 oo[1] : "";

    if (kk.equals(oo[0])) {                 

        RandomMsg.test = msg;
        RandomMsg.pool= see;
    } else {


    display(context, message);                  
}
}

这个问题将消失,但问题可能是最大的,正如你所想。我想您应该在调试时检查
消息
值,并确保它是您想要获得的值。

Post class GCMinentServiceDone?oo[3]:“”;做感谢您的回复O[]不包含6个值。有一种情况是oo仅包含2个值。这是你的日志上写的。记录oo长度和消息值,并确保它确实包含6个值,因为您认为我尝试了您的解决方案,但仍然得到相同的错误,除了此更改。。java.lang.ArrayIndexOutOfBoundsException:长度=2;索引=2 logcat上的相同错误。仅更改:ava.lang.ArrayIndexOutOfBoundsException:length=2;索引=2…可能是相同的错误。你复制了我的全部代码吗?你到处检查长度吗?对于che值也是如此吗?