如何用java编写android 11的作用域存储?
下面是我的应用程序代码。我想将图像和文件(如pdf)存储到我的文件夹路径中,以达到上述10+版本和以下版本。我只是想知道。正确的方法是什么?请让我知道我错过了什么。它的工作非常完美,但我只是混淆了根据谷歌播放应用程序成功更新政策的清单权限 我的问题是作用域存储和权限的正确方式 my manifest.xml如何用java编写android 11的作用域存储?,java,android,storage,android-11,scoped-storage,Java,Android,Storage,Android 11,Scoped Storage,下面是我的应用程序代码。我想将图像和文件(如pdf)存储到我的文件夹路径中,以达到上述10+版本和以下版本。我只是想知道。正确的方法是什么?请让我知道我错过了什么。它的工作非常完美,但我只是混淆了根据谷歌播放应用程序成功更新政策的清单权限 我的问题是作用域存储和权限的正确方式 my manifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.myapplication">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.flendzz.licstickynote.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28"
tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"
android:maxSdkVersion="29"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我想在清单许可的情况下将图像保存到我的内部存储器中。正确的方法是什么?更新了我的问题。请检查一下,不知道@黑程序
private void SaveImageaBOVE10(Bitmap bitmap) {
OutputStream fos;
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ContentResolver contentResolver = getContentResolver();
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, "image_" + ".jpg");
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES + File.separator + "Note App");
Uri imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
fos = (FileOutputStream) contentResolver.openOutputStream(Objects.requireNonNull(imageUri));
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
Objects.requireNonNull(fos);
Toast.makeText(this, "image saved", Toast.LENGTH_SHORT).show();
} else {
SaveImage(bitmap);
}
} catch (Exception e) {
e.printStackTrace();
}
}
//below 10 version
private void SaveImage(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/NoteApp");
if (!myDir.exists()) {
myDir.mkdirs();
}
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-" + n + ".jpg";
File file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(this, "image saved in storage", Toast.LENGTH_SHORT).show();
}