From 8757f8d0ed0a73eec15ab98162eabb4d9e521f53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20=C3=98stergaard?= Date: Wed, 11 Jan 2023 23:34:44 +0100 Subject: [PATCH 1/3] Check if NFC is enabled in onResume activity This essentially forces the user to enable NFC to even be able to enter the passport number etc., but you can't really do anything with the app anyways. So I figured it was better to just forcefully request the user to enable it? It shows the help text in a toast message. Fixes #49 --- .../tananaev/passportreader/MainActivity.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt index c9f2e66..f21a6fb 100644 --- a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt +++ b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt @@ -34,6 +34,7 @@ import android.util.Log import android.view.View import android.view.WindowManager import android.widget.EditText +import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import com.google.android.material.snackbar.Snackbar import com.tananaev.passportreader.ImageUtil.decodeImage @@ -164,11 +165,22 @@ abstract class MainActivity : AppCompatActivity() { super.onResume() val adapter = NfcAdapter.getDefaultAdapter(this) if (adapter != null) { - val intent = Intent(applicationContext, this.javaClass) - intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP - val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE) - val filter = arrayOf(arrayOf("android.nfc.tech.IsoDep")) - adapter.enableForegroundDispatch(this, pendingIntent, null, filter) + if (adapter.isEnabled) { + val intent = Intent(applicationContext, this.javaClass) + intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP + val pendingIntent = + PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE) + val filter = arrayOf(arrayOf("android.nfc.tech.IsoDep")) + adapter.enableForegroundDispatch(this, pendingIntent, null, filter) + } else { + Toast.makeText( + getApplicationContext(), + "Please activate NFC and press Back to return to the application!", + Toast.LENGTH_LONG + ).show(); + Thread.sleep(5_000) + startActivity(Intent(android.provider.Settings.ACTION_NFC_SETTINGS)); + } } if (passportNumberFromIntent) { // When the passport number field is populated from the caller, we hide the From 2bbafbadfdffd90964f8c4fe74da89806896da5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20=C3=98stergaard?= Date: Wed, 11 Jan 2023 23:45:29 +0100 Subject: [PATCH 2/3] Use property access syntax Because Android Studio was suggesting this --- app/src/main/java/com/tananaev/passportreader/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt index f21a6fb..eb9fd5a 100644 --- a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt +++ b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt @@ -174,7 +174,7 @@ abstract class MainActivity : AppCompatActivity() { adapter.enableForegroundDispatch(this, pendingIntent, null, filter) } else { Toast.makeText( - getApplicationContext(), + applicationContext, "Please activate NFC and press Back to return to the application!", Toast.LENGTH_LONG ).show(); From 5b6a7adfad0978612af894faf1c827eab30d4bcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20=C3=98stergaard?= Date: Thu, 12 Jan 2023 00:04:08 +0100 Subject: [PATCH 3/3] Add string as translatable resoruce instead --- app/src/main/java/com/tananaev/passportreader/MainActivity.kt | 2 +- app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt index eb9fd5a..7ccbe02 100644 --- a/app/src/main/java/com/tananaev/passportreader/MainActivity.kt +++ b/app/src/main/java/com/tananaev/passportreader/MainActivity.kt @@ -175,7 +175,7 @@ abstract class MainActivity : AppCompatActivity() { } else { Toast.makeText( applicationContext, - "Please activate NFC and press Back to return to the application!", + getString(R.string.enable_nfc_toast), Toast.LENGTH_LONG ).show(); Thread.sleep(5_000) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7673b11..55b2b99 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,4 +22,5 @@ Pass Failed + Please activate NFC and press Back to return to the application!