//        pserms.add(Manifest.permission.READ_EXTERNAL_STORAGE);
        pserms.add(Manifest.permission.MANAGE_EXTERNAL_STORAGE);
//        pserms.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
import java.io.File;

import io.objectbox.BoxStore;

public class DbManage {
    private static DbManage instance;

    private DbManage() {

    }

    public static DbManage getInstance() {
        if (instance == null) {
            synchronized (DbManage.class) {
                if (instance == null) {
                    instance = new DbManage();
                }
            }
        }
        return instance;
    }


    public void start() {
        if (AppApplication.getBoxStore() != null) {
            return;
        }
        BoxStore boxStore;
//        if (Constants.IS_USER_DEFAULT_DB_PATH) {
//            //MyObjectBox找不到,必须先创建一个对象,然后重新编译,才可以
//            try {
//                boxStore = MyObjectBox.builder().androidContext(AppApplication.getApplication()).build();
//            } catch (Exception e) {
//                //导出数据库
//                DbUtils.export(Constants.PATH_DB, DateUtil.format(DateUtil.DATE_FORMAT1) + "_异常备份.json",false);
//                LogUtils.e("数据库异常: \n" + e);
//            }
//        } else {
        String documentDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath() + "/sunvua/";
//            String documentDir = AppApplication.getApplication().getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).getPath();
        LogUtils.i("  documentDir = " + documentDir);
        FileUtils.createOrExistsDir(documentDir);
        //自定义数据库存储路径
        try {
            boxStore = MyObjectBox.builder().directory(new File(documentDir)).androidContext(AppApplication.getApplication()).build();
            if (boxStore == null) {
                ToastUtils.showLong("初始化数据库失败,请联系管理人员");
                return;
            }
            AppApplication.setBoxStore(boxStore);
            DbUtils.init();
        } catch (Exception e) {
            //导出数据库
            DbUtils.export(Constants.PATH_DB, DateUtil.format(DateUtil.DATE_FORMAT1) + "_异常备份.json", false);
            LogUtils.e("数据库异常: \n" + e);
        }
//        }
    }
}
//https://www.jianshu.com/p/e94cea26e213
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
	<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
	<application
    android:requestLegacyExternalStorage="true">

		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            // 先判断有没有权限
            if (Environment.isExternalStorageManager()) {
                writeFile();
            } else {
                Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                intent.setData(Uri.parse("package:" + context.getPackageName()));
                startActivityForResult(intent, REQUEST_CODE);
            }
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            // 先判断有没有权限
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                    ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                writeFile();
            } else {
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
            }
        } else {
            writeFile();
        }