Environment.getExternalStorageDirectory()。getAbsolutePath()不工作并给予/存储 [英] Environment.getExternalStorageDirectory().getAbsolutePath() not working and giving /storage
问题描述
我的code
MYDB = openOrCreateDatabase(/ SD卡/ FashionGirl / ImagesDB.db,Context.MODE_PRIVATE,NULL);
MYDB = openOrCreateDatabase(DBPATH,Context.MODE_PRIVATE,NULL);
完美地工作,但被给予警告不要硬code/ SD卡/;使用Environment.getExternalStorageDirectory()的getPath(),而不是
所以,我想,
字符串DBPATH = Environment.getExternalStorageDirectory()getAbsolutePath()+FashionGirl / ImagesDB.db。
MYDB = openOrCreateDatabase(DBPATH,Context.MODE_PRIVATE,NULL);
但奇怪的是,它不工作,在那里Environment.getExternalStorageDirectory()。getAbsolutePath()的值为 /存储
因此,它给错误,
19 12-17:32:02.230:E / SqliteDatabaseCpp(15620):sqlite3_open_v2(/ storageFashionGirl / ImagesDB.db,&安培;手柄,6,NULL)失败
12-17 19:32:02.230:E / SQLiteDatabase(15620):无法打开数据库。关闭它。
12-17 19:32:02.230:E / SQLiteDatabase(15620):android.database.sqlite.SQLiteCantOpenDatabaseException:无法打开数据库文件
12-17 19:32:02.230:E / SQLiteDatabase(15620):在android.database.sqlite.SQLiteDatabase.dbopen(本机方法)
12-17 19:32:02.230:E / SQLiteDatabase(15620):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:983)
12-17 19:32:02.230:E / SQLiteDatabase(15620):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956)
12-17 19:32:02.230:E / SQLiteDatabase(15620):在android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:932)
那么,为什么一些由Android不工作建议,我该怎么办?
字符串DBPATH = Environment.getExternalStorageDirectory()getAbsolutePath()+FashionGirl / ImagesDB.db。
MYDB = openOrCreateDatabase(DBPATH,Context.MODE_PRIVATE,NULL);
请不要使用串联构造的文件路径。尝试:
文件DBPATH =新的文件(Environment.getExternalStorageDirectory(),FashionGirl / ImagesDB.db);
MYDB = openOrCreateDatabase(dbPath.getAbsolutePath(),Context.MODE_PRIVATE,NULL);
但奇怪的是,它不工作,在那里Environment.getExternalStorageDirectory()。getAbsolutePath()有值/存储
块引用>这是因为
/ SD卡
已去precated了近三年。My code
myDb = openOrCreateDatabase("/sdcard/FashionGirl/ImagesDB.db", Context.MODE_PRIVATE, null); myDb = openOrCreateDatabase(dbPath, Context.MODE_PRIVATE, null);
worked perfectly, but was giving warning
Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead
So I tried,
String dbPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "FashionGirl/ImagesDB.db"; myDb = openOrCreateDatabase(dbPath, Context.MODE_PRIVATE, null);
But strangely, its not working, where Environment.getExternalStorageDirectory().getAbsolutePath() has value
/storage
So its giving error,
12-17 19:32:02.230: E/SqliteDatabaseCpp(15620): sqlite3_open_v2("/storageFashionGirl/ImagesDB.db", &handle, 6, NULL) failed 12-17 19:32:02.230: E/SQLiteDatabase(15620): Failed to open the database. closing it. 12-17 19:32:02.230: E/SQLiteDatabase(15620): android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file 12-17 19:32:02.230: E/SQLiteDatabase(15620): at android.database.sqlite.SQLiteDatabase.dbopen(Native Method) 12-17 19:32:02.230: E/SQLiteDatabase(15620): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:983) 12-17 19:32:02.230: E/SQLiteDatabase(15620): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:956) 12-17 19:32:02.230: E/SQLiteDatabase(15620): at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:932)
So why something recommended by Android is not working, what should I do?
解决方案String dbPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "FashionGirl/ImagesDB.db"; myDb = openOrCreateDatabase(dbPath, Context.MODE_PRIVATE, null);
Please do not use concatenation for constructing file paths. Try:
File dbPath = new File(Environment.getExternalStorageDirectory(), "FashionGirl/ImagesDB.db"); myDb = openOrCreateDatabase(dbPath.getAbsolutePath(), Context.MODE_PRIVATE, null);
But strangely, its not working, where Environment.getExternalStorageDirectory().getAbsolutePath() has value /storage
That is because
/sdcard
has been deprecated for nearly three years.这篇关于Environment.getExternalStorageDirectory()。getAbsolutePath()不工作并给予/存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!