繁体   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