Archos T101X 4G Android 10:MediaScannerConnection.scanFile删除



当我拍照时,我使用以下方法将图像保存在外部文件夹中的DCIM/Camer文件夹中:

方法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, 0, 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();
}
}

扫描后,我创建的文件将被删除。并且在onScanCompleted中uri的值为null。

你知道为什么吗?

编辑:我在三星Tab a上进行了测试,没有问题。但在Archos T101X4G上,它不起作用。

最后,我认为问题只来自平板电脑Archos:我刚刚用WhatsApp进行了测试,在WhatsApp中下载的图像也消失了。。。

相关内容

  • 没有找到相关文章

最新更新