1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. The_S, 11.02.2011 #1
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    der Benutzer meiner App soll einen Ton auswählen. Hierzu verwende ich in der onClick-Methode folgenden Code:

    Code:
    startActivityForResult(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER), RINGTONE_PICKER);
    meine onActivityResult-Methode sieht wie folgt aus:

    Code:
    	@Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    		if (requestCode == RINGTONE_PICKER) {
    			if (resultCode == RESULT_OK && data.hasExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)) {
    				Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
    				sound.setText(uri.toString());
    			}
    		}
    		super.onActivityResult(requestCode, resultCode, data);
    	}
    Nachdem ich den Auswahldialog bestätigt habe, erhalte ich beim Aufruf von uri.toString() eine NullPointerException und meine App stürzt ab:

    Code:
    02-11 13:59:14.402: ERROR/AndroidRuntime(938): FATAL EXCEPTION: main
    02-11 13:59:14.402: ERROR/AndroidRuntime(938): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { (has extras) }} to activity {meinpackage/meinpackage.MeineActivity}: java.lang.NullPointerException
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3515)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3557)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread.access$2800(ActivityThread.java:125)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2063)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.os.Handler.dispatchMessage(Handler.java:99)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.os.Looper.loop(Looper.java:123)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at java.lang.reflect.Method.invoke(Method.java:521)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at dalvik.system.NativeStart.main(Native Method)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938): Caused by: java.lang.NullPointerException
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at meinpackage.activities.MeineActivity.onActivityResult(AddAlarmActivity.java:90)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.Activity.dispatchActivityResult(Activity.java:3890)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
    02-11 13:59:14.402: ERROR/AndroidRuntime(938):     ... 11 more
    Ein paar Sekunden später erhalte ich noch folgende Warnung:

    Code:
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: SELECT _id, title, "content://media/external/audio/media", title_key FROM audio WHERE (is_ringtone=1
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:100)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at com.android.providers.media.MediaProvider.query(MediaProvider.java:1468)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:150)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at android.os.Binder.execTransact(Binder.java:288)
    02-11 13:59:40.672: WARN/SQLiteCompiledSql(200):     at dalvik.system.NativeStart.run(Native Method)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200): Releasing statement in a finalizer. Please ensure that you explicitly call close() on your cursor: SELECT _id, title, "content://drm/audio", title AS title_key FROM audio ORDER BY title
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:62)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:100)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:330)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:280)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at com.android.providers.drm.DrmProvider.query(DrmProvider.java:177)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:150)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at android.os.Binder.execTransact(Binder.java:288)
    02-11 13:59:40.692: WARN/SQLiteCompiledSql(200):     at dalvik.system.NativeStart.run(Native Method)
    Was mache ich falsch? Fehler tritt sowohl auf meinem Desire als auch im Emulator auf.

    Danke und Grüße
    Stefan
     
  2. DieGoldeneMitte, 11.02.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Welches ist den Zeile 90 (da kommt die NPE her)? Doch nicht etwa die mit dem sound.setText()? :blink:
     
  3. The_S, 11.02.2011 #3
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Doch, hab ich ja geschrieben ;) . uri ist null. Habe ich auch vorher verifiziert (hier aber nicht mehr ersichtlich).
     
  4. The_S, 11.02.2011 #4
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    OK, wenn ich den Default-Wert im Emulator auswähle funktionierts. Wähle ich hingegen "Silent" im Emulator aus, bekomme ich die Fehlermeldung. Kann es sein, dass ich noch eine Berechtigung setzten muss? Falls ja, welche?

    Danke!
     
  5. The_S, 12.02.2011 #5
    The_S

    The_S Threadstarter Android-Hilfe.de Mitglied

    Hab die Permission gesetzt, dass man auf die SD-Karte schreiben möchte. Jetzt funktionierts (warum auch immer, wird ja gelesen und nicht geschrieben)
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android sound auswählen