核心代码
File file = new File(photoPath);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
//方法1:
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DISPLAY_NAME, file.getName());
values.put(MediaStore.MediaColumns.MIME_TYPE, "image/png");
values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM);
ContentResolver contentResolver = getContentResolver();
Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
if (uri == null) {
Log.i(tag,"url is null:");
return;
}
Log.i(tag,"uri is not null:"+uri.getPath());
try {
OutputStream outputStream = contentResolver.openOutputStream(uri);
FileInputStream fileInputStream = new FileInputStream(file);
FileUtils.copy(fileInputStream, outputStream);
fileInputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
//方法2:看的没啥问题 感觉回退回去了
//addMediaStore(MainActivity.this,file,file.getAbsolutePath());
} else {
//方式1
MediaScannerConnection.scanFile(
getApplicationContext(),
new String[]{
file.getAbsolutePath()},
new String[]{
"image/png"},
(path, uri) -> {
// Scan Completed
});
//方式2
//context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(targetFile)));
}
完整例子
package com.szw.phototest;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import andro