diff --git a/README.md b/README.md
index 84ae6757..66d3c675 100644
--- a/README.md
+++ b/README.md
@@ -25,11 +25,13 @@ You may lose all your Moneroj if you use this App. Be cautious when spending on
- more sensible error dialogs
### Issues / Pitfalls
+- The backups folder is now called "backups" and not ".backups" - which in most file explorers was a hidden folder
+- Wallets are now created directly in the "monerujo" folder, and not in the ".new" folder as before
+- You may want to check the old folders with a file browsing app and delete the ".new" and ".backups" folders AFTER moving neccessary wallet files to the new locations. Or simply make new backups from within Monerujo.
+- Also note, that on some devices the backups will only be visible on a PC over USB after a reboot of the device (it's an Android bug/feature)
- Created wallets on a private testnet are unusable because the restore height is set to that
of the "real" testnet. After creating a new wallet, make a **new** one by recovering from the seed.
The official monero client shows the same behaviour.
-- In rare occasions the monero core code returns a wallet address with corrupted characters -
-in these cases Monerujo crashes on purpose to make sure nothing bad happens
### HOW TO BUILD
No need to build. Binaries are included:
diff --git a/app/build.gradle b/app/build.gradle
index 798a3f07..c687233c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.m2049r.xmrwallet"
minSdkVersion 21
targetSdkVersion 25
- versionCode 20
- versionName "0.8.0.7"
+ versionCode 21
+ versionName "0.8.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
index 1310b7c3..e3d740ef 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/LoginActivity.java
@@ -24,6 +24,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
+import android.media.MediaScannerConnection;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.StrictMode;
@@ -308,12 +309,14 @@ public class LoginActivity extends AppCompatActivity
}
private boolean backupWallet(String walletName) {
- File backupFolder = new File(getStorageRoot(), ".backups");
+ File backupFolder = new File(getStorageRoot(), "backups");
if (!backupFolder.exists()) {
if (!backupFolder.mkdir()) {
Log.e(TAG, "Cannot create backup dir " + backupFolder.getAbsolutePath());
return false;
}
+ // make folder visible over USB/MTP
+ MediaScannerConnection.scanFile(this, new String[]{backupFolder.toString()}, null, null);
}
File walletFile = Helper.getWalletFile(LoginActivity.this, walletName);
File backupFile = new File(backupFolder, walletName);
@@ -726,26 +729,17 @@ public class LoginActivity extends AppCompatActivity
@Override
protected Boolean doInBackground(Void... params) {
- File newWalletFolder = new File(getStorageRoot(), ".new");
- if (!newWalletFolder.exists()) {
- if (!newWalletFolder.mkdir()) {
- Log.e(TAG, "Cannot create new wallet dir " + newWalletFolder.getAbsolutePath());
- return false;
- }
- }
+ File newWalletFolder = getStorageRoot();
if (!newWalletFolder.isDirectory()) {
- Log.e(TAG, "New wallet dir " + newWalletFolder.getAbsolutePath() + "is not a directory");
+ Log.e(TAG, "Wallet dir " + newWalletFolder.getAbsolutePath() + "is not a directory");
return false;
}
File cacheFile = new File(newWalletFolder, walletName);
- cacheFile.delete();
File keysFile = new File(newWalletFolder, walletName + ".keys");
- keysFile.delete();
File addressFile = new File(newWalletFolder, walletName + ".address.txt");
- addressFile.delete();
if (cacheFile.exists() || keysFile.exists() || addressFile.exists()) {
- Log.e(TAG, "Cannot remove all old wallet files: " + cacheFile.getAbsolutePath());
+ Log.e(TAG, "Some wallet files already exist for " + cacheFile.getAbsolutePath());
return false;
}
@@ -854,15 +848,11 @@ public class LoginActivity extends AppCompatActivity
@Override
public void onAccept(final String name, final String password) {
- File newWalletFile = new File(new File(getStorageRoot(), ".new"), name);
File walletFolder = getStorageRoot();
File walletFile = new File(walletFolder, name);
- boolean rc = copyWallet(newWalletFile, walletFile, false);
- if (rc) {
- walletFile.delete(); // when recovering wallets, the cache seems corrupt
- // TODO: figure out why this is so? Only for a private testnet?
- rc = testWallet(walletFile.getAbsolutePath(), password) == Wallet.Status.Status_Ok;
- }
+ walletFile.delete(); // when recovering wallets, the cache seems corrupt
+ // TODO: figure out why this is so? Only for a private testnet?
+ boolean rc = testWallet(walletFile.getAbsolutePath(), password) == Wallet.Status.Status_Ok;
if (rc) {
popFragmentStack(GENERATE_STACK);
@@ -871,7 +861,7 @@ public class LoginActivity extends AppCompatActivity
} else {
Log.e(TAG, "Wallet store failed to " + walletFile.getAbsolutePath());
Toast.makeText(LoginActivity.this,
- getString(R.string.generate_wallet_create_failed_2), Toast.LENGTH_LONG).show();
+ getString(R.string.generate_wallet_create_failed), Toast.LENGTH_LONG).show();
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 98130bff..78b3038e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -100,8 +100,6 @@
Creating wallet
Wallet created
Wallet create failed
- Wallet create failed (1/2)
- Wallet create failed (2/2)
9tDC52GsMjTNt4dpnRCwAF7ekVBkbkgkXGaMKTcSTpBhGpqkPX56jCNRydLq9oGjbbAQBsZhLfgmTKsntmxRd3TaJFYM2f8
e2b99f4cc3d644774c4b118db05f8aa9967583a01ca4d47058c3860af10bd306
300a54208ab0a638a8407a12e3de946da76f5a9ded303338452332ec7755210d