mirror of
https://github.com/zxing/zxing.git
synced 2025-02-02 05:41:08 -08:00
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
This commit is contained in:
parent
fb65c5b791
commit
2d17cf4491
|
@ -16,12 +16,16 @@
|
||||||
|
|
||||||
package com.google.zxing.integration.android;
|
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.Activity;
|
||||||
|
import android.app.AlertDialog;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
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
|
* <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 final class IntentIntegrator {
|
||||||
|
|
||||||
public static final int REQUEST_CODE = 0x0ba7c0de; // get it?
|
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_TITLE = "Install Barcode Scanner?";
|
||||||
public static final String DEFAULT_MESSAGE =
|
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 QR_CODE_TYPES = "QR_CODE";
|
||||||
public static final String ALL_CODE_TYPES = null;
|
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() {
|
private IntentIntegrator() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,7 +186,7 @@ public final class IntentIntegrator {
|
||||||
CharSequence stringButtonNo,
|
CharSequence stringButtonNo,
|
||||||
CharSequence stringDesiredBarcodeFormats) {
|
CharSequence stringDesiredBarcodeFormats) {
|
||||||
Intent intentScan = new Intent(PACKAGE + ".SCAN");
|
Intent intentScan = new Intent(PACKAGE + ".SCAN");
|
||||||
intentScan.setPackage(PACKAGE);
|
setPackage(intentScan);
|
||||||
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
|
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
|
||||||
|
|
||||||
// check which types of codes to scan for
|
// check which types of codes to scan for
|
||||||
|
@ -274,10 +290,9 @@ public final class IntentIntegrator {
|
||||||
CharSequence stringMessage,
|
CharSequence stringMessage,
|
||||||
CharSequence stringButtonYes,
|
CharSequence stringButtonYes,
|
||||||
CharSequence stringButtonNo) {
|
CharSequence stringButtonNo) {
|
||||||
|
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.setAction(PACKAGE + ".ENCODE");
|
intent.setAction(PACKAGE + ".ENCODE");
|
||||||
intent.setPackage(PACKAGE);
|
setPackage(intent);
|
||||||
intent.putExtra("ENCODE_TYPE", "TEXT_TYPE");
|
intent.putExtra("ENCODE_TYPE", "TEXT_TYPE");
|
||||||
intent.putExtra("ENCODE_DATA", text);
|
intent.putExtra("ENCODE_DATA", text);
|
||||||
try {
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue