summaryrefslogtreecommitdiff
path: root/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java
diff options
context:
space:
mode:
authorsrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>2011-05-28 22:06:18 +0400
committersrowen <srowen@59b500cc-1b3d-0410-9834-0bbf25fbcc57>2011-05-28 22:06:18 +0400
commit2d17cf449166eff62e877ea90b1765135c9cfed3 (patch)
tree77f84a7adea88837f69dca7715f70cd3f3336ecc /android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java
parentfb65c5b791ea1e1255d7d73f6e49db917fe33fcb (diff)
downloadzxing-2d17cf449166eff62e877ea90b1765135c9cfed3.tar.xz
Access Intent.setPackage() via reflection only if available for 1.5 compatibility
git-svn-id: https://zxing.googlecode.com/svn/trunk@1802 59b500cc-1b3d-0410-9834-0bbf25fbcc57
Diffstat (limited to 'android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java')
-rw-r--r--android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java35
1 files changed, 31 insertions, 4 deletions
diff --git a/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java b/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java
index 105511bf4..05a38498f 100644
--- a/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java
+++ b/android-integration/src/com/google/zxing/integration/android/IntentIntegrator.java
@@ -16,12 +16,16 @@
package com.google.zxing.integration.android;
-import android.app.AlertDialog;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
import android.app.Activity;
+import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
+import android.util.Log;
/**
* <p>A utility class which helps ease integration with Barcode Scanner via {@link Intent}s. This is a simple
@@ -79,6 +83,7 @@ import android.net.Uri;
public final class IntentIntegrator {
public static final int REQUEST_CODE = 0x0ba7c0de; // get it?
+ private static final String TAG = IntentIntegrator.class.getSimpleName();
public static final String DEFAULT_TITLE = "Install Barcode Scanner?";
public static final String DEFAULT_MESSAGE =
@@ -94,6 +99,17 @@ public final class IntentIntegrator {
public static final String QR_CODE_TYPES = "QR_CODE";
public static final String ALL_CODE_TYPES = null;
+ public static final Method PACKAGE_SETTER;
+ static {
+ Method temp;
+ try {
+ temp = Intent.class.getMethod("setPackage", new Class[] {String.class});
+ } catch (NoSuchMethodException nsme) {
+ temp = null;
+ }
+ PACKAGE_SETTER = temp;
+ }
+
private IntentIntegrator() {
}
@@ -170,7 +186,7 @@ public final class IntentIntegrator {
CharSequence stringButtonNo,
CharSequence stringDesiredBarcodeFormats) {
Intent intentScan = new Intent(PACKAGE + ".SCAN");
- intentScan.setPackage(PACKAGE);
+ setPackage(intentScan);
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
// check which types of codes to scan for
@@ -274,10 +290,9 @@ public final class IntentIntegrator {
CharSequence stringMessage,
CharSequence stringButtonYes,
CharSequence stringButtonNo) {
-
Intent intent = new Intent();
intent.setAction(PACKAGE + ".ENCODE");
- intent.setPackage(PACKAGE);
+ setPackage(intent);
intent.putExtra("ENCODE_TYPE", "TEXT_TYPE");
intent.putExtra("ENCODE_DATA", text);
try {
@@ -287,4 +302,16 @@ public final class IntentIntegrator {
}
}
+ private static void setPackage(Intent intent) {
+ if (PACKAGE_SETTER != null) {
+ try {
+ PACKAGE_SETTER.invoke(intent, PACKAGE);
+ } catch (InvocationTargetException ite) {
+ Log.w(TAG, ite.getTargetException());
+ } catch (IllegalAccessException iae) {
+ Log.w(TAG, iae);
+ }
+ }
+ }
+
}