mkdirs()の外部ディレクトリの私のレルムデータベースのバックアップはできません名前がbackupRealmNow()
で、動作します。私はので、私は<strong>輸出(実際に私の携帯電話での)外部記憶装置</strong>の私のレルムデータベース</p> <p>にしようとしています
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();
}
}
私はコード上で実行したときに私の携帯電話が実行されているので、私のlogcatは言った、
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");
}
と私のlogcatは「許可されました」と言っています。
問題はexportRealmFile.mkdirs()
だと思います。その理由を知っていますか?ログ」
========= 編集に見るように(Logcatはコードことで任意の例外を取得しません:。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();
}
}
私のlogcatは
ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
&&
ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
これが条件で
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
ありがとうございます。あなたが言ったようにいくつかの行を変更してこのバグを修正しました。/data/tyeolrik/school/data "; ' 'ファイルexportRealmFile =新しいファイル(filePath、 "backup.realm"); ' – TyeolRik