Я не могу создать резервную копию базы данных своей области во внешнем каталоге из-за mkdirs().JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Я не могу создать резервную копию базы данных своей области во внешнем каталоге из-за mkdirs().

Сообщение Anonymous »

Я пытаюсь экспортировать базу данных своей области во внешнее хранилище (фактически в свой мобильный телефон)

Когда я нажимаю кнопку ниже, метод , с именем backupRealmNow(), работает.

public void backupRealmNow() {

Realm nowRealmForBackup = Realm.getDefaultInstance();

String filePath = "";

try {
File dir = new File(Environment.DIRECTORY_DOWNLOADS);
File exportRealmFile = new File(Environment.DIRECTORY_DOWNLOADS, "backup.realm");
filePath = exportRealmFile.getPath();

if(!dir.exists()) {
dir.mkdirs();
}

if(!exportRealmFile.exists()) {
exportRealmFile.mkdirs();
Log.d("Path", "mkdirs :: " + filePath);
}

if(exportRealmFile.exists()) {
exportRealmFile.delete();
nowRealmForBackup.writeCopyTo(exportRealmFile);
Log.d("Backup", "Success to backup " + filePath);
} else {
Log.d("Backup", "Failed to Backup");
}

} catch(Exception e) {
e.printStackTrace();
} finally {
String msg = "File exported to Path: " + filePath;
Toast.makeText(getActivity().getApplicationContext(), msg, Toast.LENGTH_LONG).show();
Log.d(TAG, msg);

nowRealmForBackup.close();
}

}


когда я запускаю приведенные выше коды, мой логарифм говорит:

D/Path: mkdirs :: Download/backup.realm
D/Backup: Failed to Backup
D/ContentValues: File exported to Path: Download/backup.realm


Я ищу причину, почему это не работает какое-то время, поэтому проверяю разрешение (потому что мой мобильный телефон работает в SDK 23 Marshmellow). Но мое разрешение был предоставлен. Ниже код проверяет разрешение, которое находится в MainActivity.java.

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this
, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE}
, REQUEST_RWAVAILABLE);
} else {
Log.e("Read and Write", "PERMISSION GRANTED");
}


и мой логарифм сказал: «РАЗРЕШЕНИЕ ПРЕДОСТАВЛЕНО».

Я думаю, проблема в экспорте RealmFile.mkdirs()< /код> не работает. Знаете ли вы причину, почему? (Logcat не получает никаких исключений для этих кодов, как вы видите в журнале"

=========
edit: backupRealmNow() был изменен, чтобы проверить, разрешен ли мой пакет.

public void backupRealmNow() {

Realm nowRealmForBackup = Realm.getDefaultInstance();

int REQUESTCODE_WRITE = 100;
int REQUESTCODE_READ = 200;

String filePath = "";

try {
File dir = new File(Environment.DIRECTORY_DOWNLOADS);
File exportRealmFile = new File(Environment.DIRECTORY_DOWNLOADS, "backup.realm");
filePath = exportRealmFile.getPath();

if(!dir.exists()) {
dir.mkdirs();
}

if(!exportRealmFile.exists()) {
exportRealmFile.mkdirs();
if(exportRealmFile.exists()) {
Log.d("mkdirs", "Success to make dir");
} else {
Log.d("mkdirs", "Failed to make dir");
if(PermissionChecker.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) {
Log.e("PermissionChecker", "WRITE_EXTERNAL_STORAGE PERMISSION_DENIED so request.");
requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUESTCODE_WRITE);
} else {
Log.e("PermissionChecker", "WRITE_EXTERNAL_STORAGE PERMISSION_GRANTED");

}
if(PermissionChecker.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) {
Log.e("PermissionChecker", "READ_EXTERNAL_STORAGE PERMISSION_DENIED so request.");
requestPermissions(new String[] {Manifest.permission.READ_EXTERNAL_STORAGE}, REQUESTCODE_READ);
} else {
Log.e("PermissionChecker", "READ_EXTERNAL_STORAGE PERMISSION_GRANTED");
}
}
}

if(exportRealmFile.exists()) {
exportRealmFile.delete();
nowRealmForBackup.writeCopyTo(exportRealmFile);
Log.d("Backup", "Success to backup " + filePath);
} else {
Log.d("Backup", "Failed to Backup");
}

} catch(Exception e) {
e.printStackTrace();
} finally {
String msg = "File exported to Path: " + filePath;
Toast.makeText(getActivity().getApplicationContext(), msg, Toast.LENGTH_LONG).show();
Log.d(TAG, msg);

nowRealmForBackup.close();
}

}


мой логкот сказал:

D/mkdirs: Failed to make dir
E/PermissionChecker: WRITE_EXTERNAL_STORAGE PERMISSION_GRANTED
E/PermissionChecker: READ_EXTERNAL_STORAGE PERMISSION_GRANTED
D/Backup: Failed to Backup
D/ContentValues: File exported to Path: Download/backup.realm


Подробнее здесь: https://stackoverflow.com/questions/440 ... -of-mkdirs
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»