作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Android 可能会在卸载/安装 SD 卡操作后删除保存在 Media.EXTERNAL_CONTENT_URI 下的数据?如何避免这种情况?
我使用此 URI 和上下文中的默认内容解析器保存铃声。
代码类似:
ContentValues values = new ContentValues();
values.put(Media.DATA, AudikoFileStorageAccessor.getInstance().getAbsolutePathForRingtone(ringtone.getId()));
values.put(Media.TITLE, ringtone.mSong);
values.put(Media.DISPLAY_NAME, ringtone.mSong);
values.put(Media.ARTIST, ringtone.mArtist);
values.put(Media.MIME_TYPE, "audio/mpeg");
values.put(Media.SIZE, ringtone.mSize * 1024);
values.put(Media.IS_RINGTONE, (RingtoneManager.TYPE_RINGTONE == type || type == 0));
values.put(Media.IS_NOTIFICATION, (RingtoneManager.TYPE_NOTIFICATION == type));
values.put(Media.IS_ALARM, (RingtoneManager.TYPE_ALARM == type));
values.put(Media.IS_MUSIC, false);
Uri newUri = mContext.getContentResolver().insert(
Media.getContentUriForPath(AudikoFileStorageAccessor.getInstance().getAbsolutePathForRingtone(
ringtone.getId())), values);
RingtoneManager.setActualDefaultRingtoneUri(mContext, type, newUri);
一切正常,但在我卸载 SD 卡然后重新安装后,此铃声不再存在并且无法在此表中找到。
我是否应该处理 UNMOUNT 事件并以某种方式备份我保存的数据并在 SD 卡再次可用时立即恢复它?
最佳答案
我发现了错误。希望有人会觉得这很有用。如果您想在卸载/安装 SD 卡后保留您的媒体,您需要在保存后立即通知有关新媒体的信息:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
如果您这样做,在您重新装入 SD 卡后,您的媒体仍然可用。
关于java - 为什么 Android 可能会删除保存在 Media.EXTERNAL_CONTENT_URI 下的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736902/
我是一名优秀的程序员,十分优秀!