From b239a5094b7929e06306f1716d5691427407bf7a Mon Sep 17 00:00:00 2001
From: m2049r
Date: Sat, 18 Aug 2018 15:50:06 +0200
Subject: [PATCH] Upgrade targetSdkVersion to Oreo (27) (#392)
* targetSdkVersion 27
* fix unescaped apostrophes in strings
* update Oreo notifications
---
app/build.gradle | 16 ++++++-------
.../xmrwallet/service/WalletService.java | 23 ++++++++++++++++++-
app/src/main/res/values-fr/help.xml | 8 +++----
app/src/main/res/values-it/about.xml | 4 ++--
app/src/main/res/values-it/help.xml | 8 +++----
app/src/main/res/values/about.xml | 10 ++++----
build.gradle | 2 ++
7 files changed, 47 insertions(+), 24 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 887f11de..ecedc2ad 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 25
- buildToolsVersion '27.0.3'
+ compileSdkVersion 27
+ buildToolsVersion '28.0.2'
defaultConfig {
applicationId "com.m2049r.xmrwallet"
minSdkVersion 21
- targetSdkVersion 25
+ targetSdkVersion 27
versionCode 113
versionName "1.6.3 'Nano S'"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -70,11 +70,11 @@ android {
}
dependencies {
- implementation 'com.android.support:appcompat-v7:25.4.0'
- implementation 'com.android.support:design:25.4.0'
- implementation 'com.android.support:support-v4:25.4.0'
- implementation 'com.android.support:recyclerview-v7:25.4.0'
- implementation 'com.android.support:cardview-v7:25.4.0'
+ implementation "com.android.support:appcompat-v7:$rootProject.ext.supportVersion"
+ implementation "com.android.support:design:$rootProject.ext.supportVersion"
+ implementation "com.android.support:support-v4:$rootProject.ext.supportVersion"
+ implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportVersion"
+ implementation "com.android.support:cardview-v7:$rootProject.ext.supportVersion"
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion"
diff --git a/app/src/main/java/com/m2049r/xmrwallet/service/WalletService.java b/app/src/main/java/com/m2049r/xmrwallet/service/WalletService.java
index f5d67dfc..cfbcb9bf 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/service/WalletService.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/service/WalletService.java
@@ -17,17 +17,22 @@
package com.m2049r.xmrwallet.service;
import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.os.Process;
+import android.support.annotation.RequiresApi;
+import android.support.v4.app.NotificationCompat;
import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.WalletActivity;
@@ -45,6 +50,7 @@ public class WalletService extends Service {
public static boolean Running = false;
final static int NOTIFICATION_ID = 2049;
+ final static String CHANNEL_ID = "m_service";
public static final String REQUEST_WALLET = "wallet";
public static final String REQUEST = "request";
@@ -566,11 +572,26 @@ public class WalletService extends Service {
private void startNotfication() {
Intent notificationIntent = new Intent(this, WalletActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
- Notification notification = new Notification.Builder(this)
+
+ String channelId = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? createNotificationChannel() : "";
+ Notification notification = new NotificationCompat.Builder(this, channelId)
.setContentTitle(getString(R.string.service_description))
+ .setOngoing(true)
.setSmallIcon(R.drawable.ic_monerujo)
+ .setPriority(NotificationCompat.PRIORITY_MIN)
+ .setCategory(NotificationCompat.CATEGORY_SERVICE)
.setContentIntent(pendingIntent)
.build();
startForeground(NOTIFICATION_ID, notification);
}
+
+ @RequiresApi(Build.VERSION_CODES.O)
+ private String createNotificationChannel() {
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ NotificationChannel channel = new NotificationChannel(CHANNEL_ID, getString(R.string.service_description),
+ NotificationManager.IMPORTANCE_LOW);
+ channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
+ notificationManager.createNotificationChannel(channel);
+ return CHANNEL_ID;
+ }
}
diff --git a/app/src/main/res/values-fr/help.xml b/app/src/main/res/values-fr/help.xml
index f147baad..d235b1e8 100644
--- a/app/src/main/res/values-fr/help.xml
+++ b/app/src/main/res/values-fr/help.xml
@@ -30,7 +30,7 @@
Entrez votre phrase Mnémonique dans le champ \"Phrase Mnémonique\".
Entrez le numéro du bloc de la première transaction utilisée pour cette adresse dans le
champ \"Hauteur de restauration\". Vous pouvez également utiliser une date au format AAA-MM-JJ.
- Si vous n'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
+ Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
n’ayez utilisé cette adresse de portefeuille pour la première fois.
]]>
@@ -43,7 +43,7 @@
Entrez votre adresse Monero dans le champ \"Adresse Publique\" et remplissez \"Clef d’Audit\" et \"Clef de dépense\".
Entrez le numéro du bloc de la première transaction utilisée pour cette adresse dans le
champ \"Hauteur de restauration\". Vous pouvez également utiliser une date au format AAA-MM-JJ.
- Si vous n'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
+ Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
n’ayez utilisé cette adresse de portefeuille pour la première fois.
]]>
@@ -56,7 +56,7 @@
Entrez votre adresse Monero dans le champ \"Adresse Publique\" et remplissez la \"Clef d’Audit\".
Entrez le numéro du bloc de la première transaction utilisée pour cette adresse dans le
champ \"Hauteur de restauration\". Vous pouvez également utiliser une date au format AAA-MM-JJ.
- Si vous n'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
+ Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
n’ayez utilisé cette adresse de portefeuille pour la première fois.
]]>
@@ -257,7 +257,7 @@
fort, ou mieux, utilisez une phrase de sécurité.
Entrez le numéro du bloc de la première transaction utilisée pour cette adresse dans le
champ \"Hauteur de restauration\". Vous pouvez également utiliser une date au format AAA-MM-JJ.
- Si vous n'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
+ Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative avant que vous
n’ayez utilisé cette adresse de portefeuille pour la première fois.
]]>
diff --git a/app/src/main/res/values-it/about.xml b/app/src/main/res/values-it/about.xml
index c3bc9e84..4f7db23c 100644
--- a/app/src/main/res/values-it/about.xml
+++ b/app/src/main/res/values-it/about.xml
@@ -27,8 +27,8 @@
Altri dati personali non sono raccolti dall\'app.
Se usi la funzionalità (opzionale) del cambio, monerujo recupera il tasso di cambio attraverso le API pubbliche di coinmarketcap.com.
Controlla la loro politica per la privacy (in lingua inglese) su https://coinmarketcap.com/privacy per conoscere i dettagli su come vengono raccolti i dati nelle tue richieste.
- Se utilizzi l'app per effettuare pagamenti ad indirizzi BTC, stai usando il servizio XMR.TO.
- Controlla la loro politica per la privacy (in lingua inglese) su https://xmr.to/ per conoscere i dettagli. Monerujo invia a loro l'indirizzo di destinazione BTC e l'ammontare della transazione. Anche il tuo IP potrebbe essere raccolto.
+ Se utilizzi l\'app per effettuare pagamenti ad indirizzi BTC, stai usando il servizio XMR.TO.
+ Controlla la loro politica per la privacy (in lingua inglese) su https://xmr.to/ per conoscere i dettagli. Monerujo invia a loro l\'indirizzo di destinazione BTC e l\'ammontare della transazione. Anche il tuo IP potrebbe essere raccolto.
Permessi app
- INTERNET : Connessione alla rete Monero attraverso un nodo
diff --git a/app/src/main/res/values-it/help.xml b/app/src/main/res/values-it/help.xml
index 42af9886..52d540a5 100644
--- a/app/src/main/res/values-it/help.xml
+++ b/app/src/main/res/values-it/help.xml
@@ -58,24 +58,24 @@
E' molto importante mantenerlo privato e conservarlo in un luogo sicuro, poiché può concedere a chiunque
pieno accesso ai tuoi Moneroj! Se non lo hai già fatto, annotati il Seed Mnemonico e conservalo in un luogo sicuro!
Password di ripristino dei file del portafoglio
- Assicurati di aver salvato questa password. Se resetti il tuo dispositivo o disinstalli l'app
+ Assicurati di aver salvato questa password. Se resetti il tuo dispositivo o disinstalli l\'app
ne avrai bisogno per accedere di nuovo al tuo portafoglio.
CrAzYpass
Se la password visualizzata qui contiene 52 caratteri alfanumerici in gruppi di 4 - Congratulazioni!
I file del tuo portafoglio sono criptati con una chiave a 256-bit generata dal tuo dispositivo
- e basata sulla passphrase che hai scelto (alla creazione o quando l'hai modificata). Questo la rende estremamente
+ e basata sulla passphrase che hai scelto (alla creazione o quando l\'hai modificata). Questo la rende estremamente
difficile da hackerare!
Questa funzionalità è obbligatoria per tutti i nuovi portafogli.
Password precedente
Se vedi la tua passphrase qui, i file del tuo portaglio non sono così sicuri come
quelli criptati da CrAzYpass. Per adeguare la tua password semplicemente seleziona \"Cambia Passphrase\" dal menu.
- Dopo aver inserito una nuova passphrase (eventualmente la stessa usata in precedenza) l'applicazione genererà
+ Dopo aver inserito una nuova passphrase (eventualmente la stessa usata in precedenza) l\'applicazione genererà
una CrAzYpass per te e la userà per mettere al sicuro i file del tuo wallet. Annotala!
Portafogli CrAzYpass
Se dovessi avere bisogno di reinstallare Monerujo (per esempio dopo aver resettato il tuo telefono
o dopo averlo sostituito) o vuoi usare i file del tuo portafoglio su un diverso dispositivo o PC, devi
usare questa password di recupero per poter accedere nuovamente al tuo portafoglio.
- Selezionando \'Cambia Passphrase\' dal menu, potrai scegliere un'altra passphrase. Questa azione
+ Selezionando \'Cambia Passphrase\' dal menu, potrai scegliere un\'altra passphrase. Questa azione
creerà una nuova password di recupero. Ricordati di annotarla!
Chiave di Visualizzazione
La tua chiave di visualizzazione può essere usata per monitorare le transazioni in ingresso al tuo portafoglio senza concedere il permesso di spendere i fondi.
diff --git a/app/src/main/res/values/about.xml b/app/src/main/res/values/about.xml
index 16f0cc2d..95eca976 100644
--- a/app/src/main/res/values/about.xml
+++ b/app/src/main/res/values/about.xml
@@ -392,7 +392,7 @@
included with this distribution is covered by the same copyright terms
except that the holder is Tim Hudson (tjh@cryptsoft.com).
- Copyright remains Eric Young's, and as such any Copyright notices in
+ Copyright remains Eric Young\'s, and as such any Copyright notices in
the code are not to be removed.
If this package is used in a product, Eric Young should be given attribution
as the author of the parts of the library used.
@@ -411,13 +411,13 @@
must display the following acknowledgement:
\"This product includes cryptographic software written by
Eric Young (eay@cryptsoft.com)\"
- The word 'cryptographic' can be left out if the rouines from the library
+ The word \'cryptographic\' can be left out if the rouines from the library
being used are not cryptographic related :-).
4. If you include any Windows specific code (or a derivative thereof) from
the apps directory (application code) you must include an acknowledgement:
\"This product includes software written by Tim Hudson (tjh@cryptsoft.com)\"
- THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ THIS SOFTWARE IS PROVIDED BY ERIC YOUNG "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
@@ -545,7 +545,7 @@
terms of any subsequent revision of the license.
THIS SOFTWARE IS PROVIDED BY THE OPENLDAP FOUNDATION AND ITS
- CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ CONTRIBUTORS "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE OPENLDAP FOUNDATION, ITS CONTRIBUTORS, OR THE AUTHOR(S)
@@ -595,7 +595,7 @@
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- 'Poppins' Font
+ \'Poppins\' Font
SIL Open Font License
Copyright (c) 2014, Indian Type Foundry (info@indiantypefoundry.com).
This Font Software is licensed under the SIL Open Font License, Version 1.1.
diff --git a/build.gradle b/build.gradle
index 71ff2494..28fb6c15 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,6 +16,7 @@ allprojects {
maven {
url "https://maven.google.com"
}
+ google()
}
}
@@ -29,4 +30,5 @@ ext {
junitVersion = '4.12'
mockitoVersion = '1.10.19'
timberVersion = '4.7.0'
+ supportVersion = '27.1.1'
}