diff --git a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
index 99c9f210..3b97f0f7 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/ReceiveFragment.java
@@ -20,15 +20,12 @@ import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
-import android.nfc.NfcAdapter;
import android.nfc.NfcManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.Fragment;
-import android.text.Editable;
import android.text.InputType;
-import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@@ -67,9 +64,8 @@ public class ReceiveFragment extends Fragment {
private ProgressBar pbProgress;
private TextView tvAddressLabel;
private TextView tvAddress;
- private TextInputLayout etPaymentId;
+ private TextInputLayout etNotes;
private ExchangeView evAmount;
- private Button bPaymentId;
private TextView tvQrCode;
private ImageView qrCode;
private ImageView qrCodeFull;
@@ -97,9 +93,8 @@ public class ReceiveFragment extends Fragment {
pbProgress = (ProgressBar) view.findViewById(R.id.pbProgress);
tvAddressLabel = (TextView) view.findViewById(R.id.tvAddressLabel);
tvAddress = (TextView) view.findViewById(R.id.tvAddress);
- etPaymentId = (TextInputLayout) view.findViewById(R.id.etPaymentId);
+ etNotes = (TextInputLayout) view.findViewById(R.id.etNotes);
evAmount = (ExchangeView) view.findViewById(R.id.evAmount);
- bPaymentId = (Button) view.findViewById(R.id.bPaymentId);
qrCode = (ImageView) view.findViewById(R.id.qrCode);
tvQrCode = (TextView) view.findViewById(R.id.tvQrCode);
qrCodeFull = (ImageView) view.findViewById(R.id.qrCodeFull);
@@ -107,7 +102,6 @@ public class ReceiveFragment extends Fragment {
bCopyAddress = (ImageButton) view.findViewById(R.id.bCopyAddress);
bSubaddress = (Button) view.findViewById(R.id.bSubaddress);
- etPaymentId.getEditText().setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
bCopyAddress.setOnClickListener(new View.OnClickListener() {
@@ -136,41 +130,17 @@ public class ReceiveFragment extends Fragment {
}
});
- etPaymentId.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ final EditText notesEdit = etNotes.getEditText();
+ notesEdit.setRawInputType(InputType.TYPE_CLASS_TEXT);
+ notesEdit.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
- if (checkPaymentId()) { // && evAmount.checkXmrAmount(true)) {
- generateQr();
- }
+ generateQr();
return true;
}
return false;
}
});
- etPaymentId.getEditText().addTextChangedListener(new TextWatcher() {
- @Override
- public void afterTextChanged(Editable editable) {
- clearQR();
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
- });
- bPaymentId.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- etPaymentId.getEditText().setText((Wallet.generatePaymentId()));
- etPaymentId.getEditText().setSelection(etPaymentId.getEditText().getText().length());
- if (checkPaymentId()) { //&& evAmount.checkXmrAmount(true)) {
- generateQr();
- }
- }
- });
bSubaddress.setOnClickListener(new View.OnClickListener() {
@Override
@@ -195,7 +165,7 @@ public class ReceiveFragment extends Fragment {
if (qrValid) {
qrCodeFull.setImageBitmap(((BitmapDrawable) qrCode.getDrawable()).getBitmap());
qrCodeFull.setVisibility(View.VISIBLE);
- } else if (checkPaymentId()) {
+ } else {
evAmount.doExchange();
}
}
@@ -292,8 +262,6 @@ public class ReceiveFragment extends Fragment {
listenerCallback.setTitle(wallet.getName());
listenerCallback.setSubtitle(wallet.getAccountLabel());
tvAddress.setText(wallet.getAddress());
- etPaymentId.setEnabled(true);
- bPaymentId.setEnabled(true);
enableCopyAddress(true);
hideProgress();
generateQr();
@@ -381,18 +349,6 @@ public class ReceiveFragment extends Fragment {
}
}
- private boolean checkPaymentId() {
- String paymentId = etPaymentId.getEditText().getText().toString();
- boolean ok = paymentId.isEmpty() || Wallet.isPaymentIdValid(paymentId);
-
- if (!ok) {
- etPaymentId.setError(getString(R.string.receive_paymentid_invalid));
- } else {
- etPaymentId.setError(null);
- }
- return ok;
- }
-
public BarcodeData getBarcodeData() {
if (qrValid)
return bcData;
@@ -405,15 +361,15 @@ public class ReceiveFragment extends Fragment {
private void generateQr() {
Timber.d("GENQR");
String address = tvAddress.getText().toString();
- String paymentId = etPaymentId.getEditText().getText().toString();
+ String notes = etNotes.getEditText().getText().toString();
String xmrAmount = evAmount.getAmount();
- Timber.d("%s/%s/%s", xmrAmount, paymentId, address);
+ Timber.d("%s/%s/%s", xmrAmount, notes, address);
if ((xmrAmount == null) || !Wallet.isAddressValid(address)) {
clearQR();
Timber.d("CLEARQR");
return;
}
- bcData = new BarcodeData(BarcodeData.Asset.XMR, address, paymentId, xmrAmount);
+ bcData = new BarcodeData(BarcodeData.Asset.XMR, address, null, notes, xmrAmount);
int size = Math.min(qrCode.getHeight(), qrCode.getWidth());
Bitmap qr = generate(bcData.getUriString(), size, size);
if (qr != null) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
index 10298f4c..635bbadf 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/data/BarcodeData.java
@@ -30,6 +30,7 @@ public class BarcodeData {
public static final String XMR_SCHEME = "monero:";
public static final String XMR_PAYMENTID = "tx_payment_id";
public static final String XMR_AMOUNT = "tx_amount";
+ public static final String XMR_DESCRIPTION = "tx_description";
static final String BTC_SCHEME = "bitcoin:";
static final String BTC_AMOUNT = "amount";
@@ -42,6 +43,7 @@ public class BarcodeData {
public String address = null;
public String paymentId = null;
public String amount = null;
+ public String description = null;
public BarcodeData(String uri) {
this.asset = asset;
@@ -66,6 +68,14 @@ public class BarcodeData {
this.amount = amount;
}
+ public BarcodeData(Asset asset, String address, String paymentId, String description, String amount) {
+ this.asset = asset;
+ this.address = address;
+ this.paymentId = paymentId;
+ this.description = description;
+ this.amount = amount;
+ }
+
public Uri getUri() {
return Uri.parse(getUriString());
}
@@ -80,12 +90,13 @@ public class BarcodeData {
first = false;
sb.append(BarcodeData.XMR_PAYMENTID).append('=').append(paymentId);
}
+ if ((description != null) && !description.isEmpty()) {
+ sb.append(first ? "?" : "&");
+ first = false;
+ sb.append(BarcodeData.XMR_DESCRIPTION).append('=').append(Uri.encode(description));
+ }
if (!amount.isEmpty()) {
- if (first) {
- sb.append("?");
- } else {
- sb.append("&");
- }
+ sb.append(first ? "?" : "&");
sb.append(BarcodeData.XMR_AMOUNT).append('=').append(amount);
}
return sb.toString();
@@ -140,6 +151,7 @@ public class BarcodeData {
}
String address = monero.getPath();
String paymentId = parms.get(XMR_PAYMENTID);
+ String description = parms.get(XMR_DESCRIPTION);
String amount = parms.get(XMR_AMOUNT);
if (amount != null) {
try {
@@ -158,7 +170,7 @@ public class BarcodeData {
Timber.d("address invalid");
return null;
}
- return new BarcodeData(Asset.XMR, address, paymentId, amount);
+ return new BarcodeData(Asset.XMR, address, paymentId, description, amount);
}
static public BarcodeData parseMoneroNaked(String address) {
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
index 8a19e5c9..4f5e1f65 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendAddressWizardFragment.java
@@ -39,9 +39,9 @@ import com.m2049r.xmrwallet.data.BarcodeData;
import com.m2049r.xmrwallet.data.TxData;
import com.m2049r.xmrwallet.data.TxDataBtc;
import com.m2049r.xmrwallet.model.Wallet;
-import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.util.BitcoinAddressValidator;
import com.m2049r.xmrwallet.util.Helper;
+import com.m2049r.xmrwallet.util.UserNotes;
import timber.log.Timber;
@@ -75,6 +75,7 @@ public class SendAddressWizardFragment extends SendWizardFragment {
private EditText etDummy;
private TextInputLayout etAddress;
private TextInputLayout etPaymentId;
+ private TextInputLayout etNotes;
private Button bPaymentId;
private CardView cvScan;
private View tvPaymentIdIntegrated;
@@ -155,15 +156,13 @@ public class SendAddressWizardFragment extends SendWizardFragment {
}
});
-
etPaymentId = (TextInputLayout) view.findViewById(R.id.etPaymentId);
etPaymentId.getEditText().setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
etPaymentId.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
+ if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_NEXT)) {
if (checkPaymentId()) {
- etDummy.requestFocus();
- Helper.hideKeyboard(getActivity());
+ etNotes.requestFocus();
}
return true;
}
@@ -193,6 +192,19 @@ public class SendAddressWizardFragment extends SendWizardFragment {
}
});
+ etNotes = (TextInputLayout) view.findViewById(R.id.etNotes);
+ etNotes.getEditText().setRawInputType(InputType.TYPE_CLASS_TEXT);
+ etNotes.getEditText().setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
+ etDummy.requestFocus();
+ Helper.hideKeyboard(getActivity());
+ return true;
+ }
+ return false;
+ }
+ });
+
cvScan = (CardView) view.findViewById(R.id.bScan);
cvScan.setOnClickListener(new View.OnClickListener() {
@Override
@@ -283,6 +295,7 @@ public class SendAddressWizardFragment extends SendWizardFragment {
txData.setDestinationAddress(etAddress.getEditText().getText().toString());
txData.setPaymentId(etPaymentId.getEditText().getText().toString());
}
+ txData.setUserNotes(new UserNotes(etNotes.getEditText().getText().toString()));
}
return true;
}
@@ -325,14 +338,21 @@ public class SendAddressWizardFragment extends SendWizardFragment {
etAddress.getEditText().getText().clear();
etAddress.setError(null);
}
- String scannedPaymenId = barcodeData.paymentId;
- if (scannedPaymenId != null) {
- etPaymentId.getEditText().setText(scannedPaymenId);
+ String scannedPaymentId = barcodeData.paymentId;
+ if (scannedPaymentId != null) {
+ etPaymentId.getEditText().setText(scannedPaymentId);
checkPaymentId();
} else {
etPaymentId.getEditText().getText().clear();
etPaymentId.setError(null);
}
+ String scannedNotes = barcodeData.description;
+ if (scannedNotes != null) {
+ etNotes.getEditText().setText(scannedNotes);
+ } else {
+ etNotes.getEditText().getText().clear();
+ etNotes.setError(null);
+ }
} else
Timber.d("barcodeData=null");
}
diff --git a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendSettingsWizardFragment.java b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendSettingsWizardFragment.java
index 1a792aca..76f13d3a 100644
--- a/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendSettingsWizardFragment.java
+++ b/app/src/main/java/com/m2049r/xmrwallet/fragment/send/SendSettingsWizardFragment.java
@@ -62,10 +62,8 @@ public class SendSettingsWizardFragment extends SendWizardFragment {
PendingTransaction.Priority.Priority_High}; // must match the layout XML
private Spinner sPriority;
- private EditText etNotes;
private EditText etDummy;
-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -77,19 +75,6 @@ public class SendSettingsWizardFragment extends SendWizardFragment {
sPriority = (Spinner) view.findViewById(R.id.sPriority);
- etNotes = (EditText) view.findViewById(R.id.etNotes);
- etNotes.setRawInputType(InputType.TYPE_CLASS_TEXT);
- etNotes.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
- etDummy.requestFocus();
- Helper.hideKeyboard(getActivity());
- return true;
- }
- return false;
- }
- });
-
etDummy = (EditText) view.findViewById(R.id.etDummy);
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
@@ -102,7 +87,6 @@ public class SendSettingsWizardFragment extends SendWizardFragment {
TxData txData = sendListener.getTxData();
txData.setPriority(Priorities[sPriority.getSelectedItemPosition()]);
txData.setMixin(MIXIN);
- txData.setUserNotes(new UserNotes(etNotes.getText().toString()));
}
return true;
}
diff --git a/app/src/main/res/layout/fragment_receive.xml b/app/src/main/res/layout/fragment_receive.xml
index a69b4980..7174d665 100644
--- a/app/src/main/res/layout/fragment_receive.xml
+++ b/app/src/main/res/layout/fragment_receive.xml
@@ -89,46 +89,21 @@
android:layout_marginTop="16dp"
android:orientation="vertical" />
-
+ android:layout_height="wrap_content">
-
+ android:hint="@string/receive_desc_hint"
+ android:imeOptions="actionDone"
+ android:inputType="textMultiLine"
+ android:textAlignment="textStart" />
-
-
-
-
-
-
+
diff --git a/app/src/main/res/layout/fragment_send_address.xml b/app/src/main/res/layout/fragment_send_address.xml
index 9f3a14e0..7867943d 100644
--- a/app/src/main/res/layout/fragment_send_address.xml
+++ b/app/src/main/res/layout/fragment_send_address.xml
@@ -1,155 +1,187 @@
-
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical">
+ android:orientation="vertical">
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
-
-
+
-
-
\ No newline at end of file
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_send_settings.xml b/app/src/main/res/layout/fragment_send_settings.xml
index 586a15f8..0564c2f5 100644
--- a/app/src/main/res/layout/fragment_send_settings.xml
+++ b/app/src/main/res/layout/fragment_send_settings.xml
@@ -43,27 +43,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
- android:gravity="center"
android:drawablePadding="8dp"
android:drawableStart="@drawable/ic_info_outline_gray_24dp"
+ android:gravity="center"
android:text="@string/info_send_prio_fees" />
-
-
-
-
-
-
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index b8976227..af267026 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -347,4 +347,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Beschreibung (optional)
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index e0e07c27..6eee91fa 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -346,4 +346,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 59727a0f..f377bd87 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -333,4 +333,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index f1365a35..f2562361 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -349,4 +349,6 @@
Language
Use System Language
+
+ Description (optional)
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 8699fe55..04a75cfa 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -347,4 +347,6 @@
Nem tudom, mit akarsz!
Sikeres címkeolvasás
NFC elérhető!
+
+ Description (optional)
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 3df3db5f..614ffdc0 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -348,4 +348,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml
index ef308ebe..3fe6c995 100644
--- a/app/src/main/res/values-nb/strings.xml
+++ b/app/src/main/res/values-nb/strings.xml
@@ -11,7 +11,7 @@
Gi nytt navn …
Arkiver
Backup
- [Forandre passord]
+ [Forandre passord]
Fortsett å skrive …
Meh …
@@ -96,15 +96,15 @@
Arkivering pågår
Nytt navn gis
Sjekker daemon-tilkobling
- [Passordforandring i gang]
+ [Passordforandring i gang]
Gjør ting ferdig …\nDette kan ta si tid!
Backup feila!
Arkivering feila!
Kunne ikke gi nytt navn!
- [Passordforandring feila!]
- [Passord forandra]
+ [Passordforandring feila!]
+ [Passord forandra]
Node
([<bruker>:<pass>@]<daemon>[:<port>])
@@ -127,8 +127,8 @@
Gi nytt navn til %1$s
- [Nytt passord for %1$s]
- [Gjenta passord for %1$s]
+ [Nytt passord for %1$s]
+ [Gjenta passord for %1$s]
Passord for %1$s
[You can also open wallet using fingerprint.\nPlease touch sensor.]
Bekreft passord
@@ -346,4 +346,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index aa6eb512..30519c6f 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -208,7 +208,7 @@
Chave de utilização
Chave Mnemónica de 25 Palavras
Restaurar de Altura ou Data (AAAA-MM-DD)
-
+
Endereço público
Chave de visualização
Chave de utilização
@@ -349,4 +349,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 9e3ed701..242c35bf 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -346,4 +346,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 3f090509..cf24590d 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -348,4 +348,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 64851448..e3c325ef 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -34,7 +34,7 @@
BTC platby aktivované, klepni pre viac info.
CrAzYpass aktivovaný, klepni pre viac info.
- Ledger aktivovaný, klepni pre viac info.
+ Ledger aktivovaný, klepni pre viac info.
Vložil si Bitcoin adresu.
@@ -316,11 +316,11 @@
Pošli všetky potvrdené prostriedky na tomto účte!
Podadresa #%1$d
Verejná Podadresa #%1$d
-
+
Jazyk
Použi jazyk systému
-
- Obnoviť z Ledger Nano S
+
+ Obnoviť z Ledger Nano S
Komunikácia s Ledger
Vyžaduje potvrdenie na Ledgeri!
@@ -345,4 +345,6 @@
Neviem čo tým básnik myslel!
Čítanie Tagu úspešné
NFC je dostupné!
+
+ Description (optional)
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 65965938..3a620310 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -330,4 +330,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 60226a50..35a79014 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -344,4 +344,6 @@
I don\'t know what you want!
Reading Tag successful
NFC Available!
+
+ Description (optional)
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 12935b2c..855b4351 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -345,4 +345,6 @@
無法執行此 NFC 標籤的操作!
已成功讀取此 NFC 標籤
可使用 NFC 標籤
+
+ Description (optional)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 981a9c4e..33b94174 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -286,6 +286,7 @@
Payment ID (optional)
Amount
+ Description (optional)
Could not open wallet!
16 or 64 Hex characters (0–9,a–f)
Must be empty with integrated address