آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ایراد در انتقال فایلهای دیتابیس از assets به حافظه داخلی در API بالاتر از 21

m.miandari  9 سال پیش  9 سال پیش
0 0

من سه تا فایل دیتابیس در فولدر Asset دارم و میخوام در ابتدای شروع به کار اونها رو به حافظه داخلی کپی کنم .
با آموزشهای استاد و استفاده از کلاس HelperIO این کار رو انجام میدم .
تو نسخه اندروید 4.1 و 5 امتحان کردم بدون مشکل انجام میشه ولی تو ورژنهای بالاتر مثل 6 فورس کلوز میده 

  context = getApplicationContext();

pref = PreferenceManager.getDefaultSharedPreferences(context);

packageName = context.getPackageName();

DIR_APP = DIR_SDCARD + "/android/data/" + packageName + "/file/";
new File(DIR_APP).mkdirs();

AssetManager assetManager = context.getAssets();
InputStream inputStream;
try {
File file = new File(DIR_APP + "/Zanjan.sqlite");
if ( !file.exists()) {
inputStream = assetManager.open("Zanjan.sqlite");
HelperIO.copyFile(inputStream, DIR_APP + "/Zanjan.sqlite");
databaseZ = SQLiteDatabase.openDatabase(DIR_APP + "/Zanjan.sqlite", null, 0);
}
if (file.exists()) {

databaseZ = SQLiteDatabase.openDatabase(DIR_APP + "/Zanjan.sqlite", null, 0);
}

File file1 = new File(DIR_APP + "/License.sqlite");
if ( !file1.exists()) {
inputStream = assetManager.open("License.sqlite");
HelperIO.copyFile(inputStream, DIR_APP + "/License.sqlite");
databaseL = SQLiteDatabase.openDatabase(DIR_APP + "/License.sqlite", null, 0);
}
if (file1.exists()) {

databaseL = SQLiteDatabase.openDatabase(DIR_APP + "/License.sqlite", null, 0);
}

File file2 = new File(DIR_APP + "/Database.sqlite");
if ( !file2.exists()) {
inputStream = assetManager.open("Database.sqlite");
HelperIO.copyFile(inputStream, DIR_APP + "/Database.sqlite");
databaseD = SQLiteDatabase.openDatabase(DIR_APP + "/Database.sqlite", null, 0);
}
if (file2.exists()) {

databaseD = SQLiteDatabase.openDatabase(DIR_APP + "/Database.sqlite", null, 0);
}

File file3 = new File(DIR_APP + "/zanjan_village.sqlite");

if ( !file3.exists()) {
inputStream = assetManager.open("zanjan_village.sqlite");
HelperIO.copyFile(inputStream, DIR_APP + "/zanjan_village.sqlite");
databaseV = SQLiteDatabase.openDatabase(DIR_APP + "/zanjan_village.sqlite", null, 0);
}
if (file3.exists()) {

databaseV = SQLiteDatabase.openDatabase(DIR_APP + "/zanjan_village.sqlite", null, 0);
}

}

catch (IOException e) {
e.printStackTrace();
}

}
+1 0
یک مورد که در مورد ورژن باید بررسی بشه این هست که شما باید از قسمت Setting پرمیزن برنامه خودتون رو چک کنید که قابلیت write رو کارت حافظه رو داشته باشه (9 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .