Vermisstes Datenbankfeld

  • Hallo


    In letzter Zeit häufen sich die Feldermeldungen in bezug auf ein Datenbankfeld das es offensichltich nicht bei allen Androiden gibt. Konktet bei einem Galaxy Note GT-N7000. Hat jemand soeines? Ich habe "nur" ein SIII und ein LG Optimus 3D.


    Fehler kommt bei der Abfrage nach dem Feld protocol.


    Java
    Uri uriSMSURI = Uri.parse("content://sms");
    
    
    Cursor cur = context.getContentResolver().query(uriSMSURI, null, null, null, "_id DESC limit 1");
    cur.moveToNext();
    String protocol = null;
    
    
    protocol = cur.getString(cur.getColumnIndex("protocol"));


    android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
    at android.database.AbstractCursor.checkPosition(AbstractCursor.java:400)
    at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
    at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
    at android.database.CursorWrapper.getInt(CursorWrapper.java:102)
    at ch.geniali.com2cal.SendSms.send(SendSms.java:56)
    at ch.geniali.com2cal.service.OutgoingSms$1.onChange(OutgoingSms.java:60)
    at android.database.ContentObserver$NotificationRunnable.run(ContentObserver.java:43)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4511)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:986)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)
    at dalvik.system.NativeStart.main(Native Method)



    Wie kann ich generell solche Fehler vermeiden? Geht das überhaupt oder muss ich das akzeptieren und bei einem Auftretten eine Lösung suchen?

  • Offensichtlich findet die Abfrage kein Ergebnis, der Cursor ist leer:

    Zitat

    Index 0 requested, with a size of 0


    Ich verarbeite meine Datenbankabfragen meistens in einer while-Schleife (bei "limit 1" reicht auch if...):

    Java
    Cursor cur = context.getContentResolver().query(uriSMSURI, null, null, null, "_id DESC limit 1");
    String protocol = null;
    while (cur.moveToNext()) {
    	protocol = cur.getString(cur.getColumnIndex("protocol"));
    	// weitere Bearbeitung
    }


    Wenn nix im Cursor ist, wird auch nix gemacht, ansonsten werden alle Ergebnins-Einträge abgearbeitet. B-)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!