I am trying to save a sound as a ringtone in Android using this code. It works like a charm, but will fail if I try to keep a ringtone that is already inserted.
"During the save, a" SQLiteConstraintException "occurs, but I cannot catch the exception, in fact I cannot catch any exceptions.
Here is part of my code:
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, I'm trying to actually catch any possible exception, but no one is caught.
This is 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)
I found a workaround: I check if the sound file exists before I call the .insert method (and do not call it if the file already exists), but I would really like to understand why the exception was not found, I hope someone Something can help me.
,
Select0r