如何在java中为android 11编写范围存储?

问题描述

下面是我的应用代码。我想将图像和文件(例如 pdf)存储到我的文件夹路径中到以上 10+ 版本和以下版本。我只是想知道。是正确的方法吗?请让我知道我错过了什么。它运行良好,但我只是混淆了应用程序成功更新的谷歌播放政策的清单许可

我的问题是范围存储和权限的正确方法

我的 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>

activity.java

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)