Android: Sound als Klingelton speichern / SQLiteConstraintException

Ich versuche, einen Sound unter Android mit @ als Klingelton zu speicherDie code. Es funktioniert wie ein Zauber, schlägt jedoch fehl, wenn ich versuche, einen bereits eingefügten Klingelton zu speichern.

A "SQLiteConstraintException" tritt beim Speichern auf, aber ich kann die Ausnahme nicht abfangen. Tatsächlich kann ich @ nicht abfangeirgendei Ausführung.

Hier ist der Teil meines Codes:

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath());

try {
  this.getContentResolver().insert(uri, values);
} catch (SQLiteConstraintException e) {
  Log.e("error", e.getMessage());
} catch (SQLiteException e) {
  Log.e("error", e.getMessage());
} catch (Exception e) {
  Log.e("error", e.getMessage());
}

So versuche ich tatsächlich eine mögliche Ausnahme zu fangen, aberkeine ist gefangen

Dies ist der LogCat:

10-12 18:32:51.627: ERROR/Database(217): Error inserting album_id=-1 title=Applause is_notification=true title_key=%,%J%J%B%,%T%P%4% mime_type=audio/ogg date_added=1286908371 _display_name=Applause.ogg is_alarm=true is_ringtone=true artist_id=1 is_music=false _data=/mnt/sdcard/media/audio/ringtones/Applause.ogg
10-12 18:32:51.627: ERROR/Database(217): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
10-12 18:32:51.627: ERROR/Database(217):     at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
10-12 18:32:51.627: ERROR/Database(217):     at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
10-12 18:32:51.627: ERROR/Database(217):     at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
10-12 18:32:51.627: ERROR/Database(217):     at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
10-12 18:32:51.627: ERROR/Database(217):     at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:1813)
10-12 18:32:51.627: ERROR/Database(217):     at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1638)
10-12 18:32:51.627: ERROR/Database(217):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:174)
10-12 18:32:51.627: ERROR/Database(217):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
10-12 18:32:51.627: ERROR/Database(217):     at android.os.Binder.execTransact(Binder.java:288)
10-12 18:32:51.627: ERROR/Database(217):     at dalvik.system.NativeStart.run(Native Method)

Ich habe eine Problemumgehung gefunden: Ich überprüfe, ob die Sounddatei vorhanden ist, bevor ich die INSERT-Methode aufrufe (und rufe sie nicht auf, wenn die Datei bereits vorhanden ist), möchte aber wirklich verstehen, warum keine Ausnahme abgefangen wird. Hoffe, jemand kann mir helfen.

Mit freundlichen Grüßen, Select0r

Antworten auf die Frage(4)

Ihre Antwort auf die Frage