-1
我有數據庫問題。我的應用程序在6版之前無誤地運行。但在運行6或7的Android版本不工作,當stop.my代碼:版本6和7中無法打開數據庫
public class MainActivity extends RuntimePermissionsActivity {
private final int WRITE_EXTERNAL_REQUEST_CODE = 30;
private final int READ_EXTERNAL_REQUEST_CODE = 80;
@Override
public void onPermissionsGranted(int requestCode) {
if (requestCode == READ_EXTERNAL_REQUEST_CODE)
Toast.makeText(getApplicationContext(), "permission", Toast.LENGTH_LONG).show();
else if (requestCode == WRITE_EXTERNAL_REQUEST_CODE)
Toast.makeText(getApplicationContext(), " permission", Toast.LENGTH_LONG).show();
}
@Override
public void onPermissionsDeny(int requestCode) {
Toast.makeText(getApplicationContext(), "not permission", Toast.LENGTH_LONG).show();
}
public static SQLiteDatabase database;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/database-shopping";public class MainActivity extends RuntimePermissionsActivity {
public static int numPermission=1;
private final int WRITE_EXTERNAL_REQUEST_CODE = 30;
private final int READ_EXTERNAL_REQUEST_CODE = 80;
@Override
public void onPermissionsGranted(int requestCode) {
if (requestCode == READ_EXTERNAL_REQUEST_CODE)
Toast.makeText(getApplicationContext(), "",Toast.LENGTH_LONG).show();
else if (requestCode == WRITE_EXTERNAL_REQUEST_CODE)
Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
}
@Override
public void onPermissionsDeny(int requestCode) {
Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
}
public static SQLiteDatabase database;
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
public static final String DIR_DATABASE = DIR_SDCARD + "/database-shopping";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MainActivity.super.requestAppPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}, WRITE_EXTERNAL_REQUEST_CODE);
new File(DIR_DATABASE).mkdirs();
database = SQLiteDatabase.openOrCreateDatabase(DIR_DATABASE + "/shopping.sqlite", null);
database.execSQL("CREATE TABLE IF NOT EXISTS person (person_name TEXT NOT NULL ," +
"person_email TEXT NOT NULL ," +
" person_password TEXT NOT NULL )");
和錯誤顯示,6或7版本上運行:
06-06 07:07:18.152 2391-2391/? E/SQLiteDatabase: Failed to open database '/storage/emulated/0/database-shopping/shopping.sqlite'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:209)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:711)
at com.example.khatere.myapplication.MainActivity.onCreate(MainActivity.java:398)
06-06 07:07:18.152 2391-2391/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.khatere.myapplication, PID: 2391
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khatere.myapplication/com.example.khatere.myapplication.MainActivity}: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
,請幫我解決問題
嗨!如果你在代碼堆棧中創建一個最小,完整和可驗證的例子(http://stackoverflow.com/help/mcve),以便將來可以在Stack溢出時使用,那將會更好。 -謝謝 – Momin