首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Archos T101X 4G Android 10 : MediaScannerConnection.scanFile删除我添加的文件

Archos T101X 4G Android 10 : MediaScannerConnection.scanFile删除我添加的文件
EN

Stack Overflow用户
提问于 2020-11-05 10:18:02
回答 1查看 114关注 0票数 0

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

方法1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);
}

我的文件在所需文件夹中的平板电脑上。

我的提供者包含以下内容:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>

在我的舱单里有这样的东西:

代码语言:javascript
复制
<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>

我的类允许文件扫描:

代码语言:javascript
复制
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上,它不起作用。

EN

回答 1

Stack Overflow用户

发布于 2020-11-06 11:20:44

最后,我认为问题只是来自于tablet :我刚刚用WhatsApp进行了测试,在WhatsApp中下载的图像也消失了.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64695159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档