我写了一段代码,用于在Android 2.1中从URL添加铃声。 在Froyo版本中,它根本无法正常工作。
当我执行插入操作时,会出现以下异常:
我在谷歌上搜索了很多关于这个错误的信息,但好像没有找到什么有用的信息。我查看了Android源代码,问题似乎是,当你没有专辑艺术时,它会生成一个URL “content://media/external/audio/albumart/-1”,但是URL匹配器不匹配任何指定的URL,然后就会抛出这个错误。
sendBroadcast(new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri
.fromFile(file)));
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA,
file.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, filenameBase);
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
values.put(AudioColumns.IS_RINGTONE, true);
values.put(AudioColumns.IS_NOTIFICATION, false);
values.put(AudioColumns.IS_ALARM, false);
values.put(AudioColumns.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(file
.getAbsolutePath());
Uri newUri = RingtoneModule.this.getContentResolver()
.insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(
RingtoneModule.this, RingtoneManager.TYPE_RINGTONE,
newUri);
当我执行插入操作时,会出现以下异常:
11-17 09:54:51.802: ERROR/DatabaseUtils(379): java.lang.IllegalStateException: Unknown URL: content://media/external/audio/albumart/-1
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.query(MediaProvider.java:1666)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.getAlbumArtOutputUri(MediaProvider.java:2983)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.makeThumbInternal(MediaProvider.java:3192)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.getThumb(MediaProvider.java:3070)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2029)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1843)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.content.ContentProvider$Transport.insert(ContentProvider.java:180)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:175)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at android.os.Binder.execTransact(Binder.java:288)
11-17 09:54:51.802: ERROR/DatabaseUtils(379): at dalvik.system.NativeStart.run(Native Method)
我在谷歌上搜索了很多关于这个错误的信息,但好像没有找到什么有用的信息。我查看了Android源代码,问题似乎是,当你没有专辑艺术时,它会生成一个URL “content://media/external/audio/albumart/-1”,但是URL匹配器不匹配任何指定的URL,然后就会抛出这个错误。
URI_MATCHER.addURI("media", "*/audio/albumart", AUDIO_ALBUMART);
URI_MATCHER.addURI("media", "*/audio/albumart/#", AUDIO_ALBUMART_ID);
有人有任何想法可以绕过这个问题吗?