2012-08-17 71 views
1

我正在使用Kryonet作爲Android應用程序,並且完全適用於所有Android版本,但3.0版本。我收到以下例外情況:僅在Android 3.0上出現異常

E/AndroidRuntime(16861): FATAL EXCEPTION: Thread-30 
E/AndroidRuntime(16861): com.esotericsoftware.kryo.KryoException: java.lang.StringIndexOutOfBoundsException: start=0 end=5 data.length=512 index=6 length=5 
E/AndroidRuntime(16861): Serialization trace: 
E/AndroidRuntime(16861): email (com.momasoft.sudokutournament.network.Network$Login) 
E/AndroidRuntime(16861): at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:203) 

這爲什麼只發生在Android 3.0上?有沒有辦法解決它?

謝謝!

+0

字符串是什麼字符?它如何設置爲5個字符的字符串 – 2012-08-17 10:42:49

+0

這是一封由用戶輸入的字符串。問題是,它可以在任何其他版本的Android上完美運行! – 2012-08-17 10:57:31

+0

您是否對電子郵件地址進行過任何驗證? – 2012-08-17 11:04:01

回答

1

我找到了一個解決方案,調試KRYO庫: 我建議改變從KRYO下面的代碼:

com.esotericsoftware.kryo.io.Output.java:307

/***Change this: ***/ 
value.getBytes(0, charCount, buffer, position); 
position += charCount; 

/***for this: ***/ 
byte[] valueB = value.getBytes(); 
for (int j = 0; j < valueB.length; j++) { 
    this.writeByte(valueB[j]); 
} 

棄用了getBytes(int start,int end,byte [] elem,int offset),並給出了android 3.0中的問題。