رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
کرش برنامه وقت ساختن دیتابیس
#1
سلام
من اندروید 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"/>
ولی باز وقت اجرای برنامه کرش می کنه
البته روی لینوکس هستم و شاید پرمیشن ایجاد فایل رو نداشته باشم
راه حلی نداره ؟
پاسخ
تشکر شده توسط:
#2
ارتباطی به لینوکس فکر نمیکنم داشته باشه. خطایی که توی LogCat میگیرین رو بنویسید.
پاسخ
تشکر شده توسط:
#3
ممنون از پاسخگوییتون
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 همون خط ایجاد دیتابیسه
پاسخ
تشکر شده توسط:
#4
مجوز READ_EXTERNAL_STORAGE رو هم بدین ببینید درست میشه؟ اگه نشد، پیشنهاد من استفاده از حافظه داخلیه یا اینکه روی گوشی خودتون تست کنید. شاید جنی‌موشن تو این مورد درست کار نکنه.
String dir = getApplicationContext().getFilesDir().getAbsolutePath() + "/database/";
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 2 مهمان