如何解决在 API 级别 29 python 中不推荐使用 Environment.getExternalStorageDirectory()?
使用getExternalFilesDir()
, getExternalCacheDir()
, orgetExternalMediaDirs()
(methods on Context
)
代替Environment.getExternalStorageDirectory()
.
或者,修改mPhotoEditor
为能够使用 a Uri
,然后:
另外,请注意,您的Uri.fromFile
withACTION_MEDIA_SCANNER_SCAN_FILE
应该在 Android 7.0+
上与FileUriExposedException
. 在 Android Q
上,只有MediaStore
/insert()
选项会让你的内容被MediaStore
快速索引。
请注意,如果您targetSdkVersion
的版本低于
30,您可以在清单android:requestLegacyExternalStorage="true"
的元素中选择退出 Android 10 和 11
上的这些“范围存储”更改。 @H_502_59@这不是一个长期的解决方案 ,因为如果您通过 Play 商店(可能还有其他地方)分发您的应用程序,您将需要在 2021
年的某个时候达到 30 岁或更高。<application>
__targetSdkVersion
解决方法
在 android Java 上工作,最近将 SDK 更新到 API 级别 29,现在显示一个警告,指出
Environment.getExternalStorageDirectory()
在 API 级别 29 中已弃用
我的代码是
private void saveImage() {
if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
final String folderPath = Environment.getExternalStorageDirectory() + "/PhotoEditors";
File folder = new File(folderPath);
if (!folder.exists()) {
File wallpaperDirectory = new File(folderPath);
wallpaperDirectory.mkdirs();
}
showLoading("Saving...");
final String filepath=folderPath
+ File.separator + ""
+ System.currentTimeMillis() + ".png";
File file = new File(filepath);
try {
file.createNewFile();
SaveSettings saveSettings = new SaveSettings.Builder()
.setClearViewsEnabled(true)
.setTransparencyEnabled(true)
.build();
if(isStoragePermissionGranted() ) {
mPhotoEditor.saveAsFile(file.getAbsolutePath(),saveSettings,new PhotoEditor.OnSaveListener() {
@Override
public void onSuccess(@NonNull String imagePath) {
hideLoading();
showSnackbar("Image Saved Successfully");
mPhotoEditorView.getSource().setImageURI(Uri.fromFile(new File(imagePath)));
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(new File(filepath))));
Intent intent = new Intent(EditImageActivity.this,StartActivity.class);
startActivity(intent);
finish();
}
@Override
public void onFailure(@NonNull Exception exception) {
hideLoading();
showSnackbar("Failed to save Image");
}
});
}
什么是替代方案?
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。