mirror of
https://github.com/m2049r/xmrwallet
synced 2025-09-03 08:23:04 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8b016f93dc | ||
![]() |
b239a5094b | ||
![]() |
6a2de36578 | ||
![]() |
5aded68c53 | ||
![]() |
d78a2be120 | ||
![]() |
e6c7800911 | ||
![]() |
cbbe079f67 |
@@ -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"
|
||||
|
@@ -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() {
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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
|
||||
n’ayez 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 d’Audit\" 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
|
||||
n’ayez 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 d’Audit\".</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
|
||||
n’ayez 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
|
||||
n’ayez utilisé cette adresse de portefeuille pour la première fois.</p>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -58,24 +58,24 @@
|
||||
E' 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.
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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 />
|
||||
|
@@ -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>
|
||||
|
@@ -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'
|
||||
}
|
||||
|
Reference in New Issue
Block a user