如何解决爱可视T101X 4G Android 10:MediaScannerConnection.scanFile删除我添加的文件
拍照时,可以通过以下方法将图像保存在外部文件夹的DCIM / Camera文件夹中:
方法1:
File fImage = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera/image.jpg");
ContentResolver resolver = activity.getContentResolver();
Uri imageUri = FileProvider.getUriForFile(activity,BuildConfig.APPLICATION_ID + ".provider",fImage);
if(imageUri != null) {
OutputStream fos = resolver.openOutputStream(imageUri);
if(fos != null) {
fos.write(bytes,bytes.length);
fos.flush();
fos.close();
new SingleMediaScanner(activity,fImage);
}
}
方法2:
File fImage = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera/image.jpg");
OutputStream outputStream=null;
try {
outputStream=new FileOutputStream(fImage);
outputStream.write(bytes);
}finally {
if (outputStream != null)
outputStream.close();
new SingleMediaScanner(activity,fImage);
}
我的文件在平板电脑上的所需文件夹中。
我的提供者包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
在我的清单中是这样的:
<uses-sdk
android:minSdkVersion="22"
android:targetSdkVersion="30" />
...
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
<application
...
android:requestLegacyExternalStorage="true"
android:preserveLegacyExternalStorage="true">
...
</application>
我的班级允许文件扫描:
public static class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {
private MediaScannerConnection mMs;
private File mFile;
public SingleMediaScanner(Context context,File f) {
mFile = f;
mMs = new MediaScannerConnection(context,this);
mMs.connect();
}
@Override
public void onMediaScannerConnected() {
String extension = FilenameUtils.getExtension(mFile.getAbsolutePath()).toLowerCase();
MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
String mimeType = mimeTypeMap.getMimeTypeFromExtension(extension);
mMs.scanFile(mFile.getAbsolutePath(),mimeType);
}
@Override
public void onScanCompleted(String path,Uri uri) {
mMs.disconnect();
}
}
此扫描后,我创建的文件被删除。 uri的值在onScanCompleted中为空。
你知道为什么吗?
已编辑: 我在Samsung Tab A上进行了测试,没有问题。但是在Archos T101X4G上它不起作用。
解决方法
最后,我认为问题仅来自平板电脑Archos:我刚刚使用WhatsApp进行了测试,从WhatsApp下载的图像也消失了……
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。