aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/MainActivity.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2013-05-30 20:11:45 +0200
committerBananeweizen <bananeweizen@gmx.de>2013-05-30 20:11:45 +0200
commit2ee1f435a08fb095468ac3036114bd944eb642a1 (patch)
treea66e68b1442b78cce3c225c4ac5acad95fd063fb /main/src/cgeo/geocaching/MainActivity.java
parent559a9990f3b6c3969c9456f498d749e0b3afd20f (diff)
downloadcgeo-2ee1f435a08fb095468ac3036114bd944eb642a1.zip
cgeo-2ee1f435a08fb095468ac3036114bd944eb642a1.tar.gz
cgeo-2ee1f435a08fb095468ac3036114bd944eb642a1.tar.bz2
fix #2730: avoid exceptions with barcode scanner
Diffstat (limited to 'main/src/cgeo/geocaching/MainActivity.java')
-rw-r--r--main/src/cgeo/geocaching/MainActivity.java25
1 files changed, 11 insertions, 14 deletions
diff --git a/main/src/cgeo/geocaching/MainActivity.java b/main/src/cgeo/geocaching/MainActivity.java
index 4393eda..faffd9f 100644
--- a/main/src/cgeo/geocaching/MainActivity.java
+++ b/main/src/cgeo/geocaching/MainActivity.java
@@ -16,6 +16,9 @@ import cgeo.geocaching.utils.Log;
import cgeo.geocaching.utils.RunnableWithArgument;
import cgeo.geocaching.utils.Version;
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
+
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -62,7 +65,6 @@ public class MainActivity extends AbstractActivity {
@InjectView(R.id.offline_count) protected TextView countBubble ;
private static final String SCAN_INTENT = "com.google.zxing.client.android.SCAN";
- private static final int SCAN_REQUEST_CODE = 1;
public static final int SEARCH_REQUEST_CODE = 2;
private int version = 0;
@@ -287,24 +289,19 @@ public class MainActivity extends AbstractActivity {
}
private void startScannerApplication() {
- Intent intent = new Intent(SCAN_INTENT);
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); // when resuming our app, cancel this activity
- intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
- startActivityForResult(intent, SCAN_REQUEST_CODE);
+ IntentIntegrator integrator = new IntentIntegrator(this);
+ integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == SCAN_REQUEST_CODE) {
- // Only handle positive results, don't do anything if cancelled.
- if (resultCode == RESULT_OK) {
- String scan = intent.getStringExtra("SCAN_RESULT");
- if (StringUtils.isBlank(scan)) {
- return;
- }
-
- SearchActivity.startActivityScan(scan, this);
+ IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
+ if (scanResult != null) {
+ String scan = scanResult.getContents();
+ if (StringUtils.isBlank(scan)) {
+ return;
}
+ SearchActivity.startActivityScan(scan, this);
} else if (requestCode == SEARCH_REQUEST_CODE) {
// SearchActivity activity returned without making a search
if (resultCode == RESULT_CANCELED) {