简体   繁体   English

在Android中的MediaStore.Audio.Media.EXTERNAL_CONTENT_URI中插入音频文件时出现问题

[英]problem while inserting audio file in MediaStore.Audio.Media.EXTERNAL_CONTENT_URI in android

my code is like this 我的代码是这样的

ContentValues values = new ContentValues(); ContentValues值=新的ContentValues();

    values.put(MediaStore.Audio.Media._ID, _ID);
        values.put(MediaStore.Audio.Media.DATA, DATA);
        values.put(MediaStore.Audio.Media.DISPLAY_NAME, DISPLAY_NAME);
        values.put(MediaStore.Audio.Media.SIZE, SIZE);
        values.put(MediaStore.Audio.Media.MIME_TYPE, MIME_TYPE);
        values.put(MediaStore.Audio.Media.DATE_ADDED, DATE_ADDED);
        values.put(MediaStore.Audio.Media.DATE_MODIFIED, DATE_MODIFIED);
        values.put(MediaStore.Audio.Media.TITLE, TITLE);
        values.put(MediaStore.Audio.Media.TITLE_KEY, TITLE_KEY);
        values.put(MediaStore.Audio.Media.DURATION, DURATION);
        values.put(MediaStore.Audio.Media.ARTIST_ID, ARTIST_ID);
        values.put(MediaStore.Audio.Media.COMPOSER, COMPOSER);
        values.put(MediaStore.Audio.Media.ALBUM_ID, ALBUM_ID);
        values.put(MediaStore.Audio.Media.TRACK, TRACK);
        values.put(MediaStore.Audio.Media.YEAR, YEAR);
        values.put(MediaStore.Audio.Media.IS_RINGTONE, IS_RINGTONE);
        values.put(MediaStore.Audio.Media.IS_ALARM, IS_ALARM);
        values.put(MediaStore.Audio.Media.IS_NOTIFICATION, IS_NOTIFICATION);
        values.put(MediaStore.Audio.Media.IS_PODCAST, IS_PODCAST);
        values.put(MediaStore.Audio.Media.BOOKMARK, BOOKMARK);
        values.put(MediaStore.Audio.Media.ARTIST_KEY, ARTIST_KEY);
        values.put(MediaStore.Audio.Media.ARTIST, ARTIST);
        values.put(MediaStore.Audio.Media.ALBUM_KEY, ALBUM_KEY);
        values.put(MediaStore.Audio.Media.ALBUM, ALBUM);
        Uri uri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
        try {
            OutputStream outStream = getContentResolver().openOutputStream(uri);
            outStream.write(buffer);
            outStream.close();

        } catch (Exception e) {
            Log.e("insetAudio", "exception inserting audio", e);
        }

it gives me exception that there is no column in audio_meta named artist_key 它给我一个例外,在audio_meta中没有名为artist_key的列

10-19 17:14:22.491: INFO/Database(214): sqlite returned: error code = 1, msg = table audio_meta has no column named artist_key 10-19 17:14:22.543: ERROR/Database(214): Error inserting artist_key=%D%<%8%<%R%,%B% is_alarm=0 is_ringtone=0 is_podcast=0 composer=null title=Vivuzela mime_type=audio/mpeg _id=5 date_added=1287488662 _display_name=vuvuzela.mp3 album_key=%,%<%D%P%%D%<%8%<%R%,%B%%R%4%0%:%F%H%V%<%,%R%<%H%F%P%%J%V%R%%B%R%2%-1882603603 year=2010 _size=498344 _data=/mnt/sdcard/Android/data/vuvuzela.mp3 bookmark=null date_modified=1287374780 track=0 artist_id=1 album_id=4 duration=31112 is_notification=0 title_key=%V%<%V%T%^%4%B%,% 10-19 17:14:22.543: ERROR/Database(214): android.database.sqlite.SQLiteException: table audio_meta has no column named artist_key: , while compiling: INSERT INTO audio_meta(artist_key, is_alarm, is_ringtone, is_podcast, composer, title, mime_type, _id, date_added, _display_name, album_key, year, _size, _data, bookmark, date_modified, track, artist_id, album 10-19 17:14:22.491:信息/数据库(214):sqlite返回:错误代码= 1,信息=表audio_meta没有名为artist_key的列10-19 17:14:22.543:错误/数据库(214):错误插入artist_key =%D%<%8%<%R%,%B%is_alarm = 0 is_ringtone = 0 is_podcast = 0 composer = null title = Vivuzela mime_type = audio / mpeg _id = 5 date_added = 1287488662 _display_name = vuvuzela.mp3 album_key =%,%<%D%P %% D%<%8%<%R%,%B %% R%4%0%:%F%H%V%<%,%R%<%H% F%P %% J%V%R %% B%R%2%-1882603603年份= 2010 _size = 498344 _data = / mnt / sdcard / Android / data / vuvuzela.mp3书签=空date_modified = 1287374780曲目= 0 artist_id = 1 album_id = 4持续时间= 31112 is_notification = 0 title_key =%V%<%V%T%^%4%B%,%10-19 17:14:22.543:错误/数据库(214):android.database。 sqlite.SQLiteException:表audio_meta没有列名为artist_key:的列,而在编译时:INSERT INTO audio_meta(artist_key,is_alarm,is_ringtone,is_podcast,作曲家,标题,mime_type,_id,date_added,_display_name,album_key,year,_size,_data,bookmark, date_modified,曲目,artist_id,专辑 _id, duration, is_notification, title_key) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); _id,持续时间,is_notification,title_key)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?); 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteCompiledSql.(SQLiteCompiledSql.java:64) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:80) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteStatement.(SQLiteStatement.java:36) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536) 10-19 17:14:22.543: ERROR/Database(214): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410) 10-19 17:14:22.543: ERROR/Database(214): at com.android.provi 10-19 17:14:22.543:错误/数据库(214):在android.database.sqlite.SQLiteCompiledSql.native_compile(本机方法)10-19 17:14:22.543:错误/数据库(214):在android.database .sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)10-19 17:14:22.543:错误/数据库(214):位于android.database.sqlite.SQLiteCompiledSql。(SQLiteCompiledSql.java:64)10-19 17: 14:22.543:ERROR / Database(214):在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:80)10-19 17:14:22.543:ERROR / Database(214):在android.database.sqlite。 SQLiteStatement。(SQLiteStatement.java:36)10-19 17:14:22.543:错误/数据库(214):位于android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145)10-19 17:14:22.543 :错误/数据库(214):位于android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536)10-19 17:14:22.543:错误/数据库(214):位于android.database.sqlite.SQLiteDatabase。插入(SQLiteDatabase.java:1410)10-19 17:14:22.543:错误/数据库(214):在com.android.provi ders.media.MediaProvider.insertInternal(MediaProvider.java:1813) 10-19 17:14:22.543: ERROR/Database(214): at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1638) 10-19 17:14:22.543: ERROR/Database(214): at android.content.ContentProvider$Transport.insert(ContentProvider.java:174) 10-19 17:14:22.543: ERROR/Database(214): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146) 10-19 17:14:22.543: ERROR/Database(214): at android.os.Binder.execTransact(Binder.java:288) 10-19 17:14:22.543: ERROR/Database(214): at dalvik.system.NativeStart.run(Native Method) ders.media.MediaProvider.insertInternal(MediaProvider.java:1813)10-19 17:14:22.543:错误/数据库(214):在com.android.providers.media.MediaProvider.insert(MediaProvider.java:1638)10 -19 17:14:22.543:错误/数据库(214):在android.content.ContentProvider $ Transport.insert(ContentProvider.java:174)10-19 17:14:22.543:错误/数据库(214):在Android .content.ContentProviderNative.onTransact(ContentProviderNative.java:146)10-19 17:14:22.543:错误/数据库(214):在android.os.Binder.execTransact(Binder.java:288)10-19 17:14 :22.543:错误/数据库(214):在dalvik.system.NativeStart.run(本机方法)

can anybody help me whts wrong with my code although i can see coulmn artist_key while getting values from cursor from this uri and also value for that but when i want to insert value it throws exception 有人能帮我弄错我的代码吗,虽然我可以看到coulmn artist_key,同时从此uri中获取游标的值以及该值,但是当我想插入值时会抛出异常

thanks in advance 提前致谢

You shouldn't try to put into ARTIST_KEY field any value, since it's calculated by Android's internal functions based on ARTIST field value. 您不应尝试将任何值放入ARTIST_KEY字段,因为它是由Android内部函数根据ARTIST字段值计算得出的。 Smth like hash value or so. 像哈希值之类的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI报告为未知URI - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI reported as Unknown URI MediaStore.Audio.Media.EXTERNAL_CONTENT_URI返回一个空游标 - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI return an empty cursor ContentResolver 插入 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 错误 - ContentResolver insert MediaStore.Audio.Media.EXTERNAL_CONTENT_URI error 我的设备上的查询问题(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null) - problem with query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null) on my device 在查询`MediaStore.Audio.Media.EXTERNAL_CONTENT_URI`之前,有没有办法强制系统媒体重新扫描? - Is there any way to force a system media rescan before querying `MediaStore.Audio.Media.EXTERNAL_CONTENT_URI`? api 29+ 已弃用 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI? - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI is deprecated for api 29+? MediaStore.Audio.Media.EXTERNAL_CONTENT_URI不扫描数据文件夹内部 - MediaStore.Audio.Media.EXTERNAL_CONTENT_URI does not scan inside data folder 使用PICK_ACTION和MediaStore.Audio.Media.EXTERNAL_CONTENT_URI时是否可以过滤或删除显示的结果? - Is it possible to filter or remove results shown when using PICK_ACTION and MediaStore.Audio.Media.EXTERNAL_CONTENT_URI? 观察Audio.Media.EXTERNAL_CONTENT_URI的Android内容观察者的更改 - Observing changes in Android content observer for Audio.Media.EXTERNAL_CONTENT_URI 未为类型MediaStore.Audio.Media android定义方法Media.getBitmap(ContentResolver,Uri) - method Media.getBitmap(ContentResolver, Uri) is undefined for type MediaStore.Audio.Media android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM