android - 插入失败时获取约束错误

标签 android android-contentprovider

我正在玩媒体 ContentProvider 并向其添加 mp3。

代码是这样的:

// LOOP1_PATH: /mnt/sdcard/60AH/hack043/loop1.mp3

ContentValues values = new ContentValues(5);
values.put(Media.ARTIST, "Android");
values.put(Media.ALBUM, "60AH");
values.put(Media.TITLE, "hack043");
values.put(Media.MIME_TYPE, "audio/mp3");
values.put(Media.DATA, LOOP1_PATH);

getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);

如果您运行此代码,它会起作用。如果您尝试运行它两次,您将获得以下堆栈跟踪:

E/Database( 4102): Error inserting album_id=66 title=hack043 title_keyQQQQQ*Q*Q*Q mime_type=audio/mp3 date_added=1342706644 _display_name=loop12.mp3 sort_key=hack043 artist_id=133 _data=/mnt/sdcard/60AH/hack043/loop1.mp3
E/Database( 4102): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
E/Database( 4102):  at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
E/Database( 4102):  at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
E/Database( 4102):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
E/Database( 4102):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
E/Database( 4102):  at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2166)
E/Database( 4102):  at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1984)
E/Database( 4102):  at android.content.ContentProvider$Transport.insert(ContentProvider.java:206)
E/Database( 4102):  at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
E/Database( 4102):  at android.os.Binder.execTransact(Binder.java:320)
E/Database( 4102):  at dalvik.system.NativeStart.run(Native Method)

不是 100% 确定,但我猜约束失败是因为路径是 UNIQUE

我的问题是:

有没有办法获取有关约束错误的更多信息?

最佳答案

不幸的是,这是 native 函数的结果。列出的代码 here被翻译成错误信息。

关于android - 插入失败时获取约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11562760/

相关文章:

android - 从公共(public)类中的 AsyncTask 更新 UI 线程

Android : Security Concern :classes. dex 公开暴露的 WebService 名称在文件中可见

android - 在 Android 中将联系人数据加入我的表格

android - 如何使用 ContentResolver 创建一个新的播放列表

android - 具有多个子表的 ContentProvider 的类结构

android - 如何在android中制作完整的圆形 ImageView

android - 关于安卓版本

android - 中断 IntentService

java - 替换ListView的 'column'中的数据

Android - sqlite 内容提供者和多线程