From 2f8ff4a29b6a43b845ee2de590042946f7c2db0a Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Sun, 31 Aug 2014 22:32:28 +0200 Subject: [PATCH] added support for configuration URIs http://frankmorgner.github.io/vsmartcard/remote-reader/README.html?host=1.1.1.1&port=123 https://frankmorgner.github.io/vsmartcard/remote-reader/README.html?host=1.1.1.1&port=123 vpcd://1.1.1.1:123 --- .../.idea/libraries/appcompat_v7_19_1_0.xml | 10 +++++ .../.idea/libraries/support_v4_19_1_0.xml | 11 +++++ .../app/src/main/AndroidManifest.xml | 28 +++++++++++- .../app/MainActivity.java | 44 +++++++++++++++---- .../remotesmartcardreader/app/VPCDWorker.java | 1 + .../app/src/main/res/values/strings.xml | 5 +++ 6 files changed, 89 insertions(+), 10 deletions(-) create mode 100644 remote-reader/.idea/libraries/appcompat_v7_19_1_0.xml create mode 100644 remote-reader/.idea/libraries/support_v4_19_1_0.xml diff --git a/remote-reader/.idea/libraries/appcompat_v7_19_1_0.xml b/remote-reader/.idea/libraries/appcompat_v7_19_1_0.xml new file mode 100644 index 0000000..700d529 --- /dev/null +++ b/remote-reader/.idea/libraries/appcompat_v7_19_1_0.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/remote-reader/.idea/libraries/support_v4_19_1_0.xml b/remote-reader/.idea/libraries/support_v4_19_1_0.xml new file mode 100644 index 0000000..3f6ff2d --- /dev/null +++ b/remote-reader/.idea/libraries/support_v4_19_1_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/remote-reader/app/src/main/AndroidManifest.xml b/remote-reader/app/src/main/AndroidManifest.xml index 2b1d5bc..af79107 100644 --- a/remote-reader/app/src/main/AndroidManifest.xml +++ b/remote-reader/app/src/main/AndroidManifest.xml @@ -14,7 +14,10 @@ android:theme="@style/AppTheme" > + android:label="@string/app_name" + android:exported="true" + android:launchMode="singleTask" > + @@ -28,6 +31,29 @@ android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> + + + + + + + + + + + + + + + + + + + diff --git a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java index a47319c..11e4238 100644 --- a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java +++ b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/MainActivity.java @@ -22,20 +22,19 @@ package com.vsmartcard.remotesmartcardreader.app; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; +import android.net.Uri; import android.nfc.NfcAdapter; +import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.os.Bundle; import android.text.Editable; import android.text.Layout; -import android.text.method.LinkMovementMethod; import android.text.method.ScrollingMovementMethod; import android.view.KeyEvent; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.Button; -import android.widget.CheckBox; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; @@ -43,7 +42,6 @@ import android.widget.TextView; import com.vsmartcard.remotesmartcardreader.app.screaders.DummyReader; import com.vsmartcard.remotesmartcardreader.app.screaders.NFCReader; import com.vsmartcard.remotesmartcardreader.app.screaders.SCReader; -import android.text.ClipboardManager; public class MainActivity extends Activity { @@ -115,7 +113,6 @@ public class MainActivity extends Activity { private boolean testing; private String hostname; private String port; - private String savedLog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -193,7 +190,13 @@ public class MainActivity extends Activity { } private void vpcdConnect(SCReader scReader) { - vpcdTest = new VPCDWorker(hostname, Integer.parseInt(port), scReader, handler); + int p = VPCDWorker.DEFAULT_PORT; + try { + p = Integer.parseInt(port); + } catch (NumberFormatException e) { + textViewVPCDStatus.append(getResources().getString(R.string.status_default_port)+"\n"); + } + vpcdTest = new VPCDWorker(hostname, p, scReader, handler); new Thread(vpcdTest).start(); } @@ -249,14 +252,37 @@ public class MainActivity extends Activity { @Override public void onResume() { super.onResume(); + Intent intent = getIntent(); // Check to see that the Activity started due to a discovered tag - if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) { - NFCReader nfcReader = NFCReader.processIntent(getIntent()); + if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) { + NFCReader nfcReader = NFCReader.processIntent(intent); if (nfcReader != null) { textViewVPCDStatus.append(getResources().getString(R.string.status_tag_discovered)+"\n"); forceConnect(nfcReader); } else { - super.onNewIntent(getIntent()); + super.onNewIntent(intent); + } + } else { + // Check to see that the Activity started due to a configuration URI + if (Intent.ACTION_VIEW.equals(intent.getAction())) { + testing = false; + vpcdDisconnect(); + Uri uri = intent.getData(); + String h = ""; + String p = ""; + if (uri.getScheme().equals(getResources().getString(R.string.scheme_vpcd))) { + h = uri.getHost(); + int _p = uri.getPort(); + if (_p > 0) { + p = Integer.toString(_p); + } + } else { + h = uri.getQueryParameter("host"); + p = uri.getQueryParameter("port"); + } + editTextVPCDHost.setText(h); + editTextVPCDPort.setText(p); + super.onNewIntent(intent); } } } diff --git a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/VPCDWorker.java b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/VPCDWorker.java index f03e923..aa41a8e 100644 --- a/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/VPCDWorker.java +++ b/remote-reader/app/src/main/java/com/vsmartcard/remotesmartcardreader/app/VPCDWorker.java @@ -31,6 +31,7 @@ import java.net.InetAddress; import java.net.Socket; public class VPCDWorker implements Runnable, Closeable { + public static int DEFAULT_PORT = 35963; private int port; private String hostname; private SCReader reader; diff --git a/remote-reader/app/src/main/res/values/strings.xml b/remote-reader/app/src/main/res/values/strings.xml index 17ffc35..e7245c2 100644 --- a/remote-reader/app/src/main/res/values/strings.xml +++ b/remote-reader/app/src/main/res/values/strings.xml @@ -23,6 +23,7 @@ Unknown Event Contact-less card discovered. Using a dummy card to test the connection. + Using default port. Copy @@ -30,4 +31,8 @@ Verbose logging Data transmission failed. Is the card still present? + http + https + vpcd +