一、问题:我的app调用系统拍照功能,然后使用知乎的Matisse框架加载自己定义的文件夹中的图片,发现怎么也不显示。
二、原因:Android给图片创建了一个数据库,我们需要手动去刷新这个数据库,把刚刚拍摄的照片信息放到数据库中,其它的软件才可以获取到图片。否则只有自己找到那个路径去拿图片了。
三、先看实现:
package com.ysl.photo;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import com.tbruyelle.rxpermissions2.RxPermissions;
import com.ysl.myandroidbase.R;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import io.reactivex.disposables.Disposable;
public class TakePhotoActivity extends AppCompatActivity {
private String path;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_takephoto);
Disposable subscribe = new RxPermissions(this).request(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(aBoolean -> {
if (aBoolean) {
findViewById(R.id.take_photo).setOnClickListener(v -> takePhoto());
} else {
}
});
}
private void takePhoto() {
Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(getPictureDirPath().getAbsolutePath(

本文介绍了解决Android应用中使用相机拍照后,图片无法在相册或其他应用中显示的问题。通过发送广播刷新系统数据库,确保图片能被正确识别。

2196

被折叠的 条评论
为什么被折叠?



