1
mirror of https://github.com/m2049r/xmrwallet synced 2025-09-03 08:23:04 +02:00

Compare commits

...

7 Commits

Author SHA1 Message Date
m2049r
8b016f93dc bump version 2018-08-19 13:45:05 +02:00
m2049r
b239a5094b Upgrade targetSdkVersion to Oreo (27) (#392)
* targetSdkVersion 27

* fix unescaped apostrophes in strings

* update Oreo notifications
2018-08-18 15:50:06 +02:00
m2049r
6a2de36578 prevent unregisterReceiver if not registered (#387) 2018-08-12 13:31:25 +02:00
m2049r
5aded68c53 Improve Send Workflow (#386)
* remove password query on initial spend screen

* report error if send tx fails

* better failed tx alert
2018-08-11 12:23:00 +02:00
m2049r
d78a2be120 send_qr_hint is not translatable (#385) 2018-08-10 16:59:39 +02:00
m2049r
e6c7800911 update gradle version 2018-08-10 16:52:14 +02:00
Attila
cbbe079f67 Hungarian update (#384)
NFC translation plus a minor fix added.
2018-08-10 16:52:48 +02:00
27 changed files with 92 additions and 78 deletions

View File

@@ -1,14 +1,14 @@
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
versionCode 113
versionName "1.6.3 'Nano S'"
targetSdkVersion 27
versionCode 114
versionName "1.6.4 'Nano S'"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
@@ -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"

View File

@@ -1276,7 +1276,10 @@ public class LoginActivity extends BaseActivity
BroadcastReceiver detachReceiver;
private void unregisterDetachReceiver() {
if (detachReceiver != null) unregisterReceiver(detachReceiver);
if (detachReceiver != null) {
unregisterReceiver(detachReceiver);
detachReceiver = null;
}
}
private void registerDetachReceiver() {

View File

@@ -431,17 +431,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
@Override
public void onSendRequest() {
if (needVerifyIdentity) {
Helper.promptPassword(WalletActivity.this, getWallet().getName(), true, new Helper.PasswordAction() {
@Override
public void action(String walletName, String password, boolean fingerprintUsed) {
replaceFragment(new SendFragment(), null, null);
needVerifyIdentity = false;
}
});
} else {
replaceFragment(new SendFragment(), null, null);
}
replaceFragment(new SendFragment(), null, null);
}
@Override

View File

@@ -216,9 +216,9 @@ public class SendBtcConfirmWizardFragment extends SendWizardFragment implements
}
@Override
public void sendFailed() {
Timber.e("SEND FAILED");
public void sendFailed(String error) {
pbProgressSend.setVisibility(View.INVISIBLE);
Toast.makeText(getContext(), getString(R.string.status_transaction_failed, error), Toast.LENGTH_LONG).show();
}
@Override

View File

@@ -19,7 +19,7 @@ package com.m2049r.xmrwallet.fragment.send;
import com.m2049r.xmrwallet.model.PendingTransaction;
interface SendConfirm {
void sendFailed();
void sendFailed(String errorText);
void createTransactionFailed(String errorText);

View File

@@ -145,17 +145,22 @@ public class SendConfirmWizardFragment extends SendWizardFragment implements Sen
}
@Override
public void sendFailed() {
public void sendFailed(String errorText) {
pbProgressSend.setVisibility(View.INVISIBLE);
showAlert(getString(R.string.send_create_tx_error_title), errorText);
}
@Override
public void createTransactionFailed(String errorText) {
hideProgress();
showAlert(getString(R.string.send_create_tx_error_title), errorText);
}
private void showAlert(String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setCancelable(true).
setTitle(getString(R.string.send_create_tx_error_title)).
setMessage(errorText).
setTitle(title).
setMessage(message).
create().
show();
}

View File

@@ -534,12 +534,11 @@ public class SendFragment extends Fragment
public void onSendTransactionFailed(final String error) {
Timber.d("error=%s", error);
committedTx = null;
Toast.makeText(getContext(), getString(R.string.status_transaction_failed, error), Toast.LENGTH_SHORT).show();
enableNavigation();
final SendConfirm fragment = getSendConfirm();
if (fragment != null) {
fragment.sendFailed();
final SendConfirm confirm = getSendConfirm();
if (confirm != null) {
confirm.sendFailed(getString(R.string.status_transaction_failed, error));
}
enableNavigation();
}
@Override

View File

@@ -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";
@@ -340,19 +346,21 @@ public class WalletService extends Service {
Wallet myWallet = getWallet();
Timber.d("SEND TX for wallet: %s", myWallet.getName());
PendingTransaction pendingTransaction = myWallet.getPendingTransaction();
if ((pendingTransaction == null)
|| (pendingTransaction.getStatus() != PendingTransaction.Status.Status_Ok)) {
if (pendingTransaction == null) {
throw new IllegalArgumentException("PendingTransaction is null"); // die
}
if (pendingTransaction.getStatus() != PendingTransaction.Status.Status_Ok) {
Timber.e("PendingTransaction is %s", pendingTransaction.getStatus());
final String error = pendingTransaction.getErrorString();
myWallet.disposePendingTransaction(); // it's broken anyway
if (observer != null) observer.onSendTransactionFailed(error);
return;
}
final String txid = pendingTransaction.getFirstTxId();
final String txid = pendingTransaction.getFirstTxId(); // tx ids vanish after commit()!
boolean success = pendingTransaction.commit("", true);
myWallet.disposePendingTransaction();
if (observer != null) observer.onTransactionSent(txid);
if (success) {
myWallet.disposePendingTransaction();
if (observer != null) observer.onTransactionSent(txid);
String notes = extras.getString(REQUEST_CMD_SEND_NOTES);
if ((notes != null) && (!notes.isEmpty())) {
myWallet.setUserNote(txid, notes);
@@ -364,6 +372,11 @@ public class WalletService extends Service {
}
if (observer != null) observer.onWalletStored(rc);
listener.updated = true;
} else {
final String error = pendingTransaction.getErrorString();
myWallet.disposePendingTransaction();
if (observer != null) observer.onSendTransactionFailed(error);
return;
}
} else if (cmd.equals(REQUEST_CMD_SETNOTE)) {
Wallet myWallet = getWallet();
@@ -559,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;
}
}

View File

@@ -227,7 +227,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Private Notizen (optional)</string>
<string name="send_generate_paymentid_hint">Erzeuge</string>
<string name="send_qr_hint">Scannen</string>
<string name="send_send_label">Gib meine wertvollen Moneroj aus</string>
<string name="send_send_timed_label">Gib meine wertvollen Moneroj aus (%1$s)</string>
<string name="send_qr_invalid">Kein QR-Code</string>

View File

@@ -201,7 +201,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Προσωπικές σημειώσεις (προαιρετικό)</string>
<string name="send_generate_paymentid_hint">Δημιουργία</string>
<string name="send_qr_hint">Σάρωση</string>
<string name="send_send_label">Ξόδεψε τα γλυκά μου Moneroj</string>
<string name="send_send_timed_label">Ξόδεψε τα γλυκά μου Moneroj (%1$s)</string>
<string name="send_qr_invalid">Δεν είναι QR κώδικας</string>

View File

@@ -169,7 +169,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Notas Privadas (opcional)</string>
<string name="send_generate_paymentid_hint">Generar</string>
<string name="send_qr_hint">Scan</string>
<string name="send_qr_invalid">No es un Código QR de monero</string>
<string name="send_qr_address_invalid">Dirección de Monero inválida</string>
<string name="send_title">Enviar</string>

View File

@@ -30,7 +30,7 @@
<p>Entrez votre phrase Mnémonique dans le champ \"Phrase Mnémonique\".<p>
<p>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 <em>avant</em> que vous
Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative <em>avant</em> que vous
nayez utilisé cette adresse de portefeuille pour la première fois.</p>
]]></string>
@@ -43,7 +43,7 @@
<p>Entrez votre adresse Monero dans le champ \"Adresse Publique\" et remplissez \"Clef dAudit\" et \"Clef de dépense\".</p>
<p>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 <em>avant</em> que vous
Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative <em>avant</em> que vous
nayez utilisé cette adresse de portefeuille pour la première fois.</p>
]]></string>
@@ -56,7 +56,7 @@
<p>Entrez votre adresse Monero dans le champ \"Adresse Publique\" et remplissez la \"Clef dAudit\".</p>
<p>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 <em>avant</em> que vous
Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative <em>avant</em> que vous
nayez utilisé cette adresse de portefeuille pour la première fois.</p>
]]></string>
@@ -257,7 +257,7 @@
fort, ou mieux, utilisez une phrase de sécurité.</p>
<p>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 <em>avant</em> que vous
Si vous n\'êtes pas sûr, entrer une date / hauteur de block approximative <em>avant</em> que vous
nayez utilisé cette adresse de portefeuille pour la première fois.</p>
]]></string>
</resources>

View File

@@ -229,7 +229,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Notes Privées (optionnelles)</string>
<string name="send_generate_paymentid_hint">Générer</string>
<string name="send_qr_hint">Scanner</string>
<string name="send_send_label">Dépenser mes beaux Moneroj</string>
<string name="send_send_timed_label">Dépenser mes beaux Moneroj (%1$s)</string>
<string name="send_qr_invalid">QR Code invalide</string>

View File

@@ -227,7 +227,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Privát közlemény (opcionális)</string>
<string name="send_generate_paymentid_hint">Generálás</string>
<string name="send_qr_hint">Beolvasás</string>
<string name="send_send_label">Édes, drága Monero elköltése</string>
<string name="send_send_timed_label">Édes, drága Monero elköltése (%1$s)</string>
<string name="send_qr_invalid">Ez nem egy QR-kód</string>
@@ -339,13 +338,13 @@
<string name="toast_ledger_attached">%1$s csatlakoztatva</string>
<string name="toast_ledger_detached">%1$s leválasztva</string>
<string name="progress_nfc_write">Writing Tag</string>
<string name="nfc_write_failed">Writing Tag failed!</string>
<string name="nfc_write_successful">Writing Tag successful</string>
<string name="nfc_tag_unsupported">Tag does not support NDEF!</string>
<string name="nfc_tag_size">Tag provides %d bytes, but we need %d!</string>
<string name="nfc_tag_read_undef">I don\'t understand the Tag!</string>
<string name="nfc_tag_read_what">I don\'t know what you want!</string>
<string name="nfc_tag_read_success">Reading Tag successful</string>
<string name="nfc_tag_tap">NFC Available!</string>
<string name="progress_nfc_write">Címke írása</string>
<string name="nfc_write_failed">Sikertelen címkeírás!</string>
<string name="nfc_write_successful">Sikeres címkeírás</string>
<string name="nfc_tag_unsupported">A címke nem támogatja az NDEF-et!</string>
<string name="nfc_tag_size">A címke %d byte-os, de %d kellene!</string>
<string name="nfc_tag_read_undef">Nem értem a címkét!</string>
<string name="nfc_tag_read_what">Nem tudom, mit akarsz!</string>
<string name="nfc_tag_read_success">Sikeres címkeolvasás</string>
<string name="nfc_tag_tap">NFC elérhető!</string>
</resources>

View File

@@ -27,8 +27,8 @@
<p>Altri dati personali non sono raccolti dall\'app.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<h2>Permessi app</h2>
<ul>
<li>INTERNET : Connessione alla rete Monero attraverso un nodo </li>

View File

@@ -58,24 +58,24 @@
E&apos; molto importante mantenerlo privato e conservarlo in un luogo sicuro, poiché può concedere a <em>chiunque</em>
pieno accesso ai tuoi Moneroj! Se non lo hai già fatto, annotati il Seed Mnemonico e conservalo in un luogo sicuro!
<h2>Password di ripristino dei file del portafoglio</h2>
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.<br/>
<h3>CrAzYpass</h3>
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!<br/>
Questa funzionalità è obbligatoria per tutti i nuovi portafogli.
<h3>Password precedente</h3>
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!
<h3>Portafogli CrAzYpass</h3>
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.<br/>
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!
<h2>Chiave di Visualizzazione</h2>
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.

View File

@@ -228,7 +228,6 @@
<string name="send_amount_hint">0,00</string>
<string name="send_notes_hint">Note private (opzionali)</string>
<string name="send_generate_paymentid_hint">Genera</string>
<string name="send_qr_hint">Scansiona</string>
<string name="send_send_label">Spendi i miei bei Moneroj</string>
<string name="send_send_timed_label">Spendi i miei bei Moneroj (%1$s)</string>
<string name="send_qr_invalid">Non è un codice QR</string>

View File

@@ -226,7 +226,6 @@
<string name="send_amount_hint">0,00</string>
<string name="send_notes_hint">Privat notat (valgfritt)</string>
<string name="send_generate_paymentid_hint">Generer</string>
<string name="send_qr_hint">Skann</string>
<string name="send_send_label">Bruk mine søte moneroj</string>
<string name="send_send_timed_label">Bruk mine søte moneroj (%1$s)</string>
<string name="send_qr_invalid">Ikke en QR-kode</string>

View File

@@ -226,7 +226,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Notas privadas (opcional)</string>
<string name="send_generate_paymentid_hint">Gerar</string>
<string name="send_qr_hint">Capturar</string>
<string name="send_send_label">Gasta os meus queridos Moneroj</string>
<string name="send_send_timed_label">Gasta os meus queridos Moneroj (%1$s)</string>
<string name="send_qr_invalid">Não é um código QR</string>

View File

@@ -201,7 +201,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Notițe private (facultativ)</string>
<string name="send_generate_paymentid_hint">Generează</string>
<string name="send_qr_hint">Scanează</string>
<string name="send_send_label">Spend my sweet Moneroj</string>
<string name="send_send_timed_label">Spend my sweet Moneroj (%1$s)</string>
<string name="send_qr_invalid">Cod QR invalid</string>

View File

@@ -228,7 +228,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Персональная заметка (необязательно)</string>
<string name="send_generate_paymentid_hint">Генерация</string>
<string name="send_qr_hint">Сканирование</string>
<string name="send_send_label">Потратьте мои сладкие Moneroj</string>
<string name="send_send_timed_label">Потратьте мои сладкие Moneroj (%1$s)</string>
<string name="send_qr_invalid">Это не QR-код</string>

View File

@@ -207,7 +207,6 @@
<string name="send_amount_hint">0,00</string>
<string name="send_notes_hint">Privat anteckning (valfri)</string>
<string name="send_generate_paymentid_hint">Skapa</string>
<string name="send_qr_hint">Skanna</string>
<string name="send_send_label">Spendera mina Moneroj</string>
<string name="send_send_timed_label">Spendera mina Moneroj (%1$s)</string>
<string name="send_qr_invalid">Inte en QR-kod</string>

View File

@@ -224,7 +224,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">注记 (选填)</string>
<string name="send_generate_paymentid_hint">产生</string>
<string name="send_qr_hint">扫描</string>
<string name="send_send_label">发送我的 Monero</string>
<string name="send_send_timed_label">发送我的 Monero (%1$s)</string>
<string name="send_qr_invalid">这不是QR码</string>

View File

@@ -225,7 +225,6 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">註記 (選填)</string>
<string name="send_generate_paymentid_hint">產生</string>
<string name="send_qr_hint">掃描</string>
<string name="send_send_label">發送我的 Monero</string>
<string name="send_send_timed_label">發送我的 Monero (%1$s)</string>
<string name="send_qr_invalid">這不是QR碼</string>

View File

@@ -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).<br/>
<br/>
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:<br/>
\"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 :-).<br/>
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)\"<br/>
<br/>
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.<br/>
<br/>
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.
<h2>'Poppins' Font</h2>
<h2>\'Poppins\' Font</h2>
<h3>SIL Open Font License</h3>
<p>Copyright (c) 2014, Indian Type Foundry (info@indiantypefoundry.com).</p>
<p>This Font Software is licensed under the SIL Open Font License, Version 1.1.<br />

View File

@@ -233,7 +233,7 @@
<string name="send_amount_hint">0.00</string>
<string name="send_notes_hint">Private Notes (optional)</string>
<string name="send_generate_paymentid_hint">Generate</string>
<string name="send_qr_hint">Scan</string>
<string name="send_qr_hint" translatable="false">Scan</string>
<string name="send_send_label">Spend my sweet Moneroj</string>
<string name="send_send_timed_label">Spend my sweet Moneroj (%1$s)</string>
<string name="send_qr_invalid">Not a QR Code</string>

View File

@@ -6,7 +6,7 @@ buildscript {
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.android.tools.build:gradle:3.1.4'
}
}
@@ -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'
}