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

时间:2010-10-19 12:18:58

标签: android

我的代码就像这样

ContentValues values = new 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);
        }

它给了我一个例外,即audio_meta中没有名为artist_key的列

10-19 17:14:22.491:INFO / Database(214):sqlite返回:错误代码= 1,msg =表audio_meta没有名为artist_key的列 10-19 17:14:22.543:ERROR / Database(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 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没有名为artist_key的列:编译时: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_id,duration,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):在android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 10-19 17:14:22.543:ERROR / Database(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:ERROR / Database(214):在android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1145) 10-19 17:14:22.543:ERROR / Database(214):在android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1536) 10-19 17:14:22.543:ERROR / Database(214):在android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410) 10-19 17:14:22.543:ERROR / Database(214):at com.android.providers.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):在android.content.ContentProvider $ Transport.insert(ContentProvider.java:174) 10-19 17:14:22.543:ERROR / Database(214):在android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146) 10-19 17:14:22.543:ERROR / Database(214):在android.os.Binder.execTransact(Binder.java:288) 10-19 17:14:22.543:ERROR / Database(214):at dalvik.system.NativeStart.run(Native Method)

任何人都可以帮我解决我的代码错误 虽然我可以看到coulmn artist_key,同时从这个uri获取光标的值,并且也为此值,但是当我想插入值时,它会抛出异常

提前致谢

1 个答案:

答案 0 :(得分:0)

您不应该尝试将任何值放入ARTIST_KEY字段,因为它是由Android的内部函数根据ARTIST字段值计算的。 Smth喜欢哈希值左右。