如何用java编写android 11的作用域存储?

如何用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

下面是我的应用程序代码。我想将图像和文件(如pdf)存储到我的文件夹路径中,以达到上述10+版本和以下版本。我只是想知道。正确的方法是什么?请让我知道我错过了什么。它的工作非常完美,但我只是混淆了根据谷歌播放应用程序成功更新政策的清单权限

我的问题是作用域存储和权限的正确方式

my manifest.xml

    <?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();
        }