gpt4 book ai didi

java - 为什么 Android 可能会删除保存在 Media.EXTERNAL_CONTENT_URI 下的数据?

转载 作者:行者123 更新时间:2023-11-30 11:55:59 26 4
gpt4 key购买 nike

为什么 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com