سلام
من اندروید 6 دارم (23) و جنی موشن
با کد زیر دیتایس رو میسازم
String dir= Environment.getExternalStorageDirectory().getAbsolutePath()+"/database/";
Log.i("log",dir);
new File(dir).mkdirs();
db=SQLiteDatabase.openOrCreateDatabase(dir+"student.sqlite",null);
و پرمشن رو هم توی مینفست ست کردم
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
ولی باز وقت اجرای برنامه کرش می کنه
البته روی لینوکس هستم و شاید پرمیشن ایجاد فایل رو نداشته باشم
راه حلی نداره ؟
ارتباطی به لینوکس فکر نمیکنم داشته باشه. خطایی که توی LogCat میگیرین رو بنویسید.
ممنون از پاسخگوییتون
I/log: /storage/emulated/0/database/
07-14 11:10:42.050 3466-3466/? E/SQLiteLog: (14) cannot open file at line 31278 of [2ef4f3a5b1]
07-14 11:10:42.051 3466-3466/? E/SQLiteLog: (14) os_unix.c:31278: (2) open(/storage/emulated/0/database/ds.sqlite) -
07-14 11:10:42.057 3466-3466/? E/SQLiteDatabase: Failed to open database '/storage/emulated/0/database/ds.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:207)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
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:806)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:709)
at ir.gh_darvishani.student.Database.<init>(Database.java:18)
at ir.gh_darvishani.student.MainActivity.onCreate(MainActivity.java:19)
at android.app.Activity.performCreate(Activity.java:6237)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
خط 18 همون خط ایجاد دیتابیسه
مجوز READ_EXTERNAL_STORAGE رو هم بدین ببینید درست میشه؟ اگه نشد، پیشنهاد من استفاده از حافظه داخلیه یا اینکه روی گوشی خودتون تست کنید. شاید جنیموشن تو این مورد درست کار نکنه.
String dir = getApplicationContext().getFilesDir().getAbsolutePath() + "/database/";