[英]How to keep sqlite database on an android device if the app is uninstalled?
卸載我的應用程序后,我的sqlite數據庫會自動刪除。 我希望保留數據庫,因此在重新安裝應用程序時不需要重建數據庫。
默認情況下,Android應用程序的所有數據庫都保存在/ data / data / your-package-name / databases文件夾中。 卸載應用程序時,/ data / data / your-package-name目錄及其所有子目錄都將被刪除。 如果數據庫文件保存在此位置,則無法保留它們。
但是,如果將數據庫文件保存到SD卡,即使卸載后文件仍會保留。
這是在外部目錄中創建數據庫的示例
public class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(final Context context) {
super(context, Environment.getExternalStorageDirectory()
+ File.separator + FILE_DIR
+ File.separator + DATABASE_NAME, null, DATABASE_VERSION);
...
}
...
}
在這里回答這個問題如何直接在sdcard上存儲sqlite數據庫
記住要添加權限以在清單中寫入外部存儲
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我也看到READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE被歸類為“危險權限”
雷夫: https : //developer.android.com/guide/topics/permissions/requesting.html
您需要在運行時獲得用戶許可(僅一次)。 本頁介紹了操作方法: https : //developer.android.com/training/permissions/requesting.html
這是執行此檢查的示例代碼(來自對棉花糖的存儲和畫廊使用的讀寫權限 )
public class MainActivity extends AppCompatActivity implements
ActivityCompat.OnRequestPermissionsResultCallback{
private static final int REQUEST_WRITE_PERMISSION = 786;
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_WRITE_PERMISSION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openFilePicker();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermission();
}
private void requestPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_WRITE_PERMISSION);
} else {
openFilePicker();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.