簡體   English   中英

如果該應用已卸載,如何將sqlite數據庫保留在android設備上?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM