summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2019-06-04 13:40:46 +0200
committerBjørn Mork <bjorn@mork.no>2019-06-04 13:41:01 +0200
commitd548d7cdfab48cfe8e97e823fe7e802bc60cd7b8 (patch)
tree1d949e1537e697df5c7f7bbf7477eab3608832fc
parentb072705f962f3d223fb7f8984e69a5289f7f1b3c (diff)
prevent QR result from ending up in clipboard history
Extra preferences can be set on the scan intent. Including the upstream Intents class to make use of the constants and docs there. Signed-off-by: Bjørn Mork <bjorn@mork.no>
-rw-r--r--Defogger/Makefile1
-rwxr-xr-xDefogger/src/com/google/zxing/client/android/Intents.java303
-rw-r--r--Defogger/src/no/mork/android/defogger/ConfigureNetworkActivity.java2
-rw-r--r--Defogger/src/no/mork/android/defogger/MainActivity.java4
4 files changed, 309 insertions, 1 deletions
diff --git a/Defogger/Makefile b/Defogger/Makefile
index 4467cc7..37070fc 100644
--- a/Defogger/Makefile
+++ b/Defogger/Makefile
@@ -22,6 +22,7 @@ RES=$(addprefix res/,$(RESOURCES))
#CLASSES=obj/no/mork/android/defogger/R.class $(patsubst src/%.java,obj/%.class,$(wildcard src/no/mork/android/defogger/util/*.java) $(wildcard src/no/mork/android/defogger/*.java))
CLASSES=obj/no/mork/android/defogger/R.class $(patsubst src/%.java,obj/%.class,\
$(wildcard src/no/mork/android/defogger/*.java) \
+ $(wildcard src/com/google/zxing/client/android/*.java) \
$(wildcard src/com/google/zxing/integration/android/*.java))
all: defogger.apk
diff --git a/Defogger/src/com/google/zxing/client/android/Intents.java b/Defogger/src/com/google/zxing/client/android/Intents.java
new file mode 100755
index 0000000..c11963c
--- /dev/null
+++ b/Defogger/src/com/google/zxing/client/android/Intents.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2008 ZXing authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.zxing.client.android;
+
+import android.content.Intent;
+
+/**
+ * This class provides the constants to use when sending an Intent to Barcode Scanner.
+ * These strings are effectively API and cannot be changed.
+ *
+ * @author dswitkin@google.com (Daniel Switkin)
+ */
+public final class Intents {
+ private Intents() {
+ }
+
+ /**
+ * Constants related to the {@link Scan#ACTION} Intent.
+ */
+ public static final class Scan {
+ /**
+ * Send this intent to open the Barcodes app in scanning mode, find a barcode, and return
+ * the results.
+ */
+ public static final String ACTION = "com.google.zxing.client.android.SCAN";
+
+ /**
+ * By default, sending this will decode all barcodes that we understand. However it
+ * may be useful to limit scanning to certain formats. Use
+ * {@link android.content.Intent#putExtra(String, String)} with one of the values below.
+ *
+ * Setting this is effectively shorthand for setting explicit formats with {@link #FORMATS}.
+ * It is overridden by that setting.
+ */
+ public static final String MODE = "SCAN_MODE";
+
+ /**
+ * Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get
+ * prices, reviews, etc. for products.
+ */
+ public static final String PRODUCT_MODE = "PRODUCT_MODE";
+
+ /**
+ * Decode only 1D barcodes.
+ */
+ public static final String ONE_D_MODE = "ONE_D_MODE";
+
+ /**
+ * Decode only QR codes.
+ */
+ public static final String QR_CODE_MODE = "QR_CODE_MODE";
+
+ /**
+ * Decode only Data Matrix codes.
+ */
+ public static final String DATA_MATRIX_MODE = "DATA_MATRIX_MODE";
+
+ /**
+ * Decode only Aztec.
+ */
+ public static final String AZTEC_MODE = "AZTEC_MODE";
+
+ /**
+ * Decode only PDF417.
+ */
+ public static final String PDF417_MODE = "PDF417_MODE";
+
+ /**
+ * Comma-separated list of formats to scan for. The values must match the names of
+ * {@link com.google.zxing.BarcodeFormat}s, e.g. {@link com.google.zxing.BarcodeFormat#EAN_13}.
+ * Example: "EAN_13,EAN_8,QR_CODE". This overrides {@link #MODE}.
+ */
+ public static final String FORMATS = "SCAN_FORMATS";
+
+ /**
+ * Optional parameter to specify the id of the camera from which to recognize barcodes.
+ * Overrides the default camera that would otherwise would have been selected.
+ * If provided, should be an int.
+ */
+ public static final String CAMERA_ID = "SCAN_CAMERA_ID";
+
+ /**
+ * @see com.google.zxing.DecodeHintType#CHARACTER_SET
+ */
+ public static final String CHARACTER_SET = "CHARACTER_SET";
+
+ /**
+ * Optional parameters to specify the width and height of the scanning rectangle in pixels.
+ * The app will try to honor these, but will clamp them to the size of the preview frame.
+ * You should specify both or neither, and pass the size as an int.
+ */
+ public static final String WIDTH = "SCAN_WIDTH";
+ public static final String HEIGHT = "SCAN_HEIGHT";
+
+ /**
+ * Desired duration in milliseconds for which to pause after a successful scan before
+ * returning to the calling intent. Specified as a long, not an integer!
+ * For example: 1000L, not 1000.
+ */
+ public static final String RESULT_DISPLAY_DURATION_MS = "RESULT_DISPLAY_DURATION_MS";
+
+ /**
+ * Prompt to show on-screen when scanning by intent. Specified as a {@link String}.
+ */
+ public static final String PROMPT_MESSAGE = "PROMPT_MESSAGE";
+
+ /**
+ * If a barcode is found, Barcodes returns {@link android.app.Activity#RESULT_OK} to
+ * {@link android.app.Activity#onActivityResult(int, int, android.content.Intent)}
+ * of the app which requested the scan via
+ * {@link android.app.Activity#startActivityForResult(android.content.Intent, int)}
+ * The barcodes contents can be retrieved with
+ * {@link android.content.Intent#getStringExtra(String)}.
+ * If the user presses Back, the result code will be {@link android.app.Activity#RESULT_CANCELED}.
+ */
+ public static final String RESULT = "SCAN_RESULT";
+
+ /**
+ * Call {@link android.content.Intent#getStringExtra(String)} with {@code RESULT_FORMAT}
+ * to determine which barcode format was found.
+ * See {@link com.google.zxing.BarcodeFormat} for possible values.
+ */
+ public static final String RESULT_FORMAT = "SCAN_RESULT_FORMAT";
+
+ /**
+ * Call {@link android.content.Intent#getStringExtra(String)} with {@code RESULT_UPC_EAN_EXTENSION}
+ * to return the content of any UPC extension barcode that was also found. Only applicable
+ * to {@link com.google.zxing.BarcodeFormat#UPC_A} and {@link com.google.zxing.BarcodeFormat#EAN_13}
+ * formats.
+ */
+ public static final String RESULT_UPC_EAN_EXTENSION = "SCAN_RESULT_UPC_EAN_EXTENSION";
+
+ /**
+ * Call {@link android.content.Intent#getByteArrayExtra(String)} with {@code RESULT_BYTES}
+ * to get a {@code byte[]} of raw bytes in the barcode, if available.
+ */
+ public static final String RESULT_BYTES = "SCAN_RESULT_BYTES";
+
+ /**
+ * Key for the value of {@link com.google.zxing.ResultMetadataType#ORIENTATION}, if available.
+ * Call {@link android.content.Intent#getIntArrayExtra(String)} with {@code RESULT_ORIENTATION}.
+ */
+ public static final String RESULT_ORIENTATION = "SCAN_RESULT_ORIENTATION";
+
+ /**
+ * Key for the value of {@link com.google.zxing.ResultMetadataType#ERROR_CORRECTION_LEVEL}, if available.
+ * Call {@link android.content.Intent#getStringExtra(String)} with {@code RESULT_ERROR_CORRECTION_LEVEL}.
+ */
+ public static final String RESULT_ERROR_CORRECTION_LEVEL = "SCAN_RESULT_ERROR_CORRECTION_LEVEL";
+
+ /**
+ * Prefix for keys that map to the values of {@link com.google.zxing.ResultMetadataType#BYTE_SEGMENTS},
+ * if available. The actual values will be set under a series of keys formed by adding 0, 1, 2, ...
+ * to this prefix. So the first byte segment is under key "SCAN_RESULT_BYTE_SEGMENTS_0" for example.
+ * Call {@link android.content.Intent#getByteArrayExtra(String)} with these keys.
+ */
+ public static final String RESULT_BYTE_SEGMENTS_PREFIX = "SCAN_RESULT_BYTE_SEGMENTS_";
+
+ /**
+ * Setting this to false will not save scanned codes in the history. Specified as a {@code boolean}.
+ */
+ public static final String SAVE_HISTORY = "SAVE_HISTORY";
+
+ private Scan() {
+ }
+ }
+
+ /**
+ * Constants related to the scan history and retrieving history items.
+ */
+ public static final class History {
+
+ public static final String ITEM_NUMBER = "ITEM_NUMBER";
+
+ private History() {
+ }
+ }
+
+ /**
+ * Constants related to the {@link Encode#ACTION} Intent.
+ */
+ public static final class Encode {
+ /**
+ * Send this intent to encode a piece of data as a QR code and display it full screen, so
+ * that another person can scan the barcode from your screen.
+ */
+ public static final String ACTION = "com.google.zxing.client.android.ENCODE";
+
+ /**
+ * The data to encode. Use {@link android.content.Intent#putExtra(String, String)} or
+ * {@link android.content.Intent#putExtra(String, android.os.Bundle)},
+ * depending on the type and format specified. Non-QR Code formats should
+ * just use a String here. For QR Code, see Contents for details.
+ */
+ public static final String DATA = "ENCODE_DATA";
+
+ /**
+ * The type of data being supplied if the format is QR Code. Use
+ * {@link android.content.Intent#putExtra(String, String)} with one of {@link Contents.Type}.
+ */
+ public static final String TYPE = "ENCODE_TYPE";
+
+ /**
+ * The barcode format to be displayed. If this isn't specified or is blank,
+ * it defaults to QR Code. Use {@link android.content.Intent#putExtra(String, String)}, where
+ * format is one of {@link com.google.zxing.BarcodeFormat}.
+ */
+ public static final String FORMAT = "ENCODE_FORMAT";
+
+ /**
+ * Normally the contents of the barcode are displayed to the user in a TextView. Setting this
+ * boolean to false will hide that TextView, showing only the encode barcode.
+ */
+ public static final String SHOW_CONTENTS = "ENCODE_SHOW_CONTENTS";
+
+ private Encode() {
+ }
+ }
+
+ /**
+ * Constants related to the {@link SearchBookContents#ACTION} Intent.
+ */
+ public static final class SearchBookContents {
+ /**
+ * Use Google Book Search to search the contents of the book provided.
+ */
+ public static final String ACTION = "com.google.zxing.client.android.SEARCH_BOOK_CONTENTS";
+
+ /**
+ * The book to search, identified by ISBN number.
+ */
+ public static final String ISBN = "ISBN";
+
+ /**
+ * An optional field which is the text to search for.
+ */
+ public static final String QUERY = "QUERY";
+
+ private SearchBookContents() {
+ }
+ }
+
+ /**
+ * Constants related to the {@link WifiConnect#ACTION} Intent.
+ */
+ public static final class WifiConnect {
+ /**
+ * Internal intent used to trigger connection to a wi-fi network.
+ */
+ public static final String ACTION = "com.google.zxing.client.android.WIFI_CONNECT";
+
+ /**
+ * The network to connect to, all the configuration provided here.
+ */
+ public static final String SSID = "SSID";
+
+ /**
+ * The network to connect to, all the configuration provided here.
+ */
+ public static final String TYPE = "TYPE";
+
+ /**
+ * The network to connect to, all the configuration provided here.
+ */
+ public static final String PASSWORD = "PASSWORD";
+
+ private WifiConnect() {
+ }
+ }
+
+ /**
+ * Constants related to the {@link Share#ACTION} Intent.
+ */
+ public static final class Share {
+ /**
+ * Give the user a choice of items to encode as a barcode, then render it as a QR Code and
+ * display onscreen for a friend to scan with their phone.
+ */
+ public static final String ACTION = "com.google.zxing.client.android.SHARE";
+
+ private Share() {
+ }
+ }
+
+ // Not the best place for this, but, better than a new class
+ // Should be FLAG_ACTIVITY_NEW_DOCUMENT in API 21+.
+ // Defined once here because the current value is deprecated, so generates just one warning
+ public static final int FLAG_NEW_DOC = Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
+}
diff --git a/Defogger/src/no/mork/android/defogger/ConfigureNetworkActivity.java b/Defogger/src/no/mork/android/defogger/ConfigureNetworkActivity.java
index 38a8fec..d1803c4 100644
--- a/Defogger/src/no/mork/android/defogger/ConfigureNetworkActivity.java
+++ b/Defogger/src/no/mork/android/defogger/ConfigureNetworkActivity.java
@@ -105,6 +105,8 @@ public class ConfigureNetworkActivity extends Activity {
edit = (EditText) findViewById(R.id.ssid);
String ssid = kv.containsKey("I") ? kv.get("I") : edit.getText().toString();
+ Log.d(msg, "kv is " + kv);
+
/* returning empty ssid is not allowed */
if (ssid == null || ssid.length() == 0)
returnConfigResult(null);
diff --git a/Defogger/src/no/mork/android/defogger/MainActivity.java b/Defogger/src/no/mork/android/defogger/MainActivity.java
index 0aa6379..a95e741 100644
--- a/Defogger/src/no/mork/android/defogger/MainActivity.java
+++ b/Defogger/src/no/mork/android/defogger/MainActivity.java
@@ -17,6 +17,7 @@ import android.util.Log;
import android.view.View;
import android.widget.TextView;
+import com.google.zxing.client.android.Intents;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
@@ -131,7 +132,8 @@ public class MainActivity extends Activity {
public void startQRReaderActivity(View view) {
IntentIntegrator integrator = new IntentIntegrator(this);
- integrator.setTitleByID(R.values.qrtitle);
+ integrator.setTitleByID(R.string.qrtitle);
+ integrator.addExtra(Intents.Scan.SAVE_HISTORY, false); // prevent scan result from showing up in input history...
integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES);
}