SQLiteConstraintException: error code 19: constraint failed when set ringtones

瘦欲@ 提交于 2019-12-12 03:11:58

问题


Here is my code.

ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA, newSoundFile.getAbsolutePath());
        values.put(MediaStore.MediaColumns.TITLE, "my ringtone");
        values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
        values.put(MediaStore.MediaColumns.SIZE, newSoundFile.length());
        values.put(MediaStore.Audio.Media.ARTIST, R.string.app_name);
        values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
        values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
        values.put(MediaStore.Audio.Media.IS_ALARM, true);
        values.put(MediaStore.Audio.Media.IS_MUSIC, false);

        Uri uri = MediaStore.Audio.Media.getContentUriForPath(newSoundFile
                .getAbsolutePath());
        Uri newUri = mCr.insert(uri, values);

        try {
            RingtoneManager.setActualDefaultRingtoneUri(RingToneActivity.this,
                    RingtoneManager.TYPE_RINGTONE, newUri);

        } catch (Throwable t) {
            Log.d("Eroor", "catch exception");
        }

but i get error...

07-14 18:07:09.569: E/Database(7505): Error inserting album_id=-1 title=afsdfa is_notification=true title_key=Q-Q7QQQ3Q7Q-Q mime_type=audio/* date_added=1373805429 _display_name=myringtone.mp3 is_alarm=true is_ringtone=true _size=0 artist_id=6 is_music=false _data=/sdcard/MyRingTones/myringtone.mp3
07-14 18:07:09.569: E/Database(7505): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
07-14 18:07:09.569: E/Database(7505):   at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
07-14 18:07:09.569: E/Database(7505):   at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
07-14 18:07:09.569: E/Database(7505):   at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
07-14 18:07:09.569: E/Database(7505):   at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
07-14 18:07:09.569: E/Database(7505):   at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2519)
07-14 18:07:09.569: E/Database(7505):   at com.android.providers.media.MediaProvider.insert(MediaProvider.java:2341)
07-14 18:07:09.569: E/Database(7505):   at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
07-14 18:07:09.569: E/Database(7505):   at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
07-14 18:07:09.569: E/Database(7505):   at android.os.Binder.execTransact(Binder.java:320)
07-14 18:07:09.569: E/Database(7505):   at dalvik.system.NativeStart.run(Native Method)

Please Help. Thanks in advance.


回答1:


I solve problem.


 Uri uri = MediaStore.Audio.Media.getContentUriForPath(SDCardRoot);                                                               
                               getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + SDCardRoot + "\"", null);                               
                               Uri newUri = getContentResolver().insert(uri, values);                


来源:https://stackoverflow.com/questions/17639486/sqliteconstraintexception-error-code-19-constraint-failed-when-set-ringtones

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!