objectbox 外置数据库
原创
©著作权归作者所有:来自51CTO博客作者痛而不觉的原创作品,请联系作者获取转载授权,否则将追究法律责任
// 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();
}