在API23上:未知错误(代码14):无法打开数据库

时间:2016-07-26 10:29:37

标签: android sqlite

专家,

我在运行SQLiteDatabase.openOrCreateDatabase时遇到此错误,在API 23上 ,ob API 21正常。

根据上面的上一个问题链接, AB1209 的答案指出应该授予运行时权限。但是,这是API 23的新功能。

我想在API 21和23上使用该应用程序。我有2个问题:

  1. 是不是存在逻辑问题?我已经在清单中授予了权限,在运行时更多时间执行此操作的理由是什么? (我的理解是,只有在安装期间没有在舱单中授予时才需要运行时权限)

  2. 如果我在运行时授予权限,它会影响在API 21上运行时的使用情况吗? (我仍然可以在API 21上使用APP?)

  3. 感谢。

    链接: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database

    我已获得以下许可:

     android.permission.WRITE_EXTERNAL_STORAGE"
    

1 个答案:

答案 0 :(得分:0)

将此信息放入您的活动中:

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);

你的代码在这里:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
        //resume tasks needing this permission
    }
}