2018年8月30日

Android Studio unknown error (Sqlite code 14): Could not open database


在Android 6.0 版之後,想讀取使用者的行動裝置資料,需要經過使用都的准許後,才可以做使用,所以,在此記錄。

import android.Manifest;//需要import的函式庫

public static final int REQUEST_EXTERNAL_STORAGE = 1; //宣告
private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; //宣告要開放的權限,這裡有讀、寫


//如果版本小於 23 就是 6.0 以下的版本,就不會跑下面方法
if (Build.VERSION.SDK_INT >= 23) {
        //訊問使用者
        int permission = ActivityCompat.checkSelfPermission(this,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE); //檢查權限狀態
        if (permission != PackageManager.PERMISSION_GRANTED) {
                //未取得權限,向使用者要求允許權限
                ActivityCompat.requestPermissions(this, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); //跳出准許的訊號框
        } else {
                //已有權限,可進行檔案存取}
                initDB();
        }
}


 /**
     * 請求權限回繢
     *
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
 @Override
 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 1) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //表示授權成功
                initDB();
            }
}
    }

沒有留言:

張貼留言