簡體   English   中英

在Android中的MediaStore.Audio.Media.EXTERNAL_CONTENT_URI中插入音頻文件時出現問題

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

我的代碼是這樣的

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);
        }

它給我一個例外,在audio_meta中沒有名為artist_key的列

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,持續時間,is_notification,title_key)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, ?,?); 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:錯誤/數據庫(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(本機方法)

有人能幫我弄錯我的代碼嗎,雖然我可以看到coulmn artist_key,同時從此uri中獲取游標的值以及該值,但是當我想插入值時會拋出異常

提前致謝

您不應嘗試將任何值放入ARTIST_KEY字段,因為它是由Android內部函數根據ARTIST字段值計算得出的。 像哈希值之類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM