diff --git a/android/res/values-de/strings.xml b/android/res/values-de/strings.xml
index 33557890e..1d2662c87 100644
--- a/android/res/values-de/strings.xml
+++ b/android/res/values-de/strings.xml
@@ -99,6 +99,8 @@
URL gefunden
Historie
Historie löschen
+ Historie senden
+ Barcode Scanner Historie
Google Book Search
Weitergabe mittels Barcode
Barcode Scanner v
diff --git a/android/res/values-es/strings.xml b/android/res/values-es/strings.xml
index 872bf6377..671f4da4c 100644
--- a/android/res/values-es/strings.xml
+++ b/android/res/values-es/strings.xml
@@ -99,6 +99,8 @@
URL encontrado
Historia
Borrar historial
+ Enviar historia
+ Historia de Escáner de código de barras
Búsqueda de libros de Google
Compartir por códigos de barras
Escáner de código de barras v
diff --git a/android/res/values-fr/strings.xml b/android/res/values-fr/strings.xml
index 6e8248c00..a328c0ac5 100644
--- a/android/res/values-fr/strings.xml
+++ b/android/res/values-fr/strings.xml
@@ -99,6 +99,8 @@
URL trouvée
Historique
Vider l\'historique
+ Envoyer historique
+ Historique de Barcode Scanner
Recherche Google Livres
Partager par code barre
Barcode Scanner v
diff --git a/android/res/values-it/strings.xml b/android/res/values-it/strings.xml
index bbf108ff1..3cefaaca6 100644
--- a/android/res/values-it/strings.xml
+++ b/android/res/values-it/strings.xml
@@ -99,6 +99,8 @@
URL trovato
Cronologia
Cancella cronologia
+ Invia cronologia
+ Scansione codice a barre cronologia
Ricerca Google Book
Condividi tramite codice a barre
Scansione codice a barre v
diff --git a/android/res/values-ja-rJP/strings.xml b/android/res/values-ja-rJP/strings.xml
index c90eb3ec4..12b415f0b 100644
--- a/android/res/values-ja-rJP/strings.xml
+++ b/android/res/values-ja-rJP/strings.xml
@@ -99,6 +99,8 @@
URL がヒットしました
歴史
削除履歴
+ 歴史を送信
+ QRコードスキャナー歴史
Google ブックス
バーコードで共有する
>QRコードスキャナー v
diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml
index 96ce1b19a..a686d6a3b 100644
--- a/android/res/values-ru/strings.xml
+++ b/android/res/values-ru/strings.xml
@@ -99,6 +99,8 @@
Найден URL
История
Очистить историю
+ Отправить историю
+ Сканер штрих-кодов История
Поиск книг Google
Поделиться через штрих-код
Сканер штрих-кодов версии
diff --git a/android/res/values-zh-rCN/strings.xml b/android/res/values-zh-rCN/strings.xml
index 1e2287b72..fddad769d 100644
--- a/android/res/values-zh-rCN/strings.xml
+++ b/android/res/values-zh-rCN/strings.xml
@@ -99,6 +99,8 @@
找到URL
历史
删除历史
+ 发送历史
+ 条码扫描器历史
Google图书搜索
通过条码分享
条码扫描器
diff --git a/android/res/values-zh-rTW/strings.xml b/android/res/values-zh-rTW/strings.xml
index 8bdf4b736..89a73de72 100644
--- a/android/res/values-zh-rTW/strings.xml
+++ b/android/res/values-zh-rTW/strings.xml
@@ -99,6 +99,8 @@
找到URL
歷史
刪除歷史
+ 發送歷史
+ 條碼掃描器歷史
Google圖書搜索
通過條碼分享
條碼掃描器
diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml
index 64d7c546b..e099a31c1 100755
--- a/android/res/values/strings.xml
+++ b/android/res/values/strings.xml
@@ -100,6 +100,8 @@
Found URL
History
Clear history
+ Send history
+ Barcode Scanner history
Google Book Search
Share via barcode
Barcode Scanner v
diff --git a/android/src/com/google/zxing/client/android/Intents.java b/android/src/com/google/zxing/client/android/Intents.java
index bea5306ec..10e088ac1 100755
--- a/android/src/com/google/zxing/client/android/Intents.java
+++ b/android/src/com/google/zxing/client/android/Intents.java
@@ -70,6 +70,11 @@ public final class Intents {
*/
public static final String RESULT_FORMAT = "SCAN_RESULT_FORMAT";
+ /**
+ * Setting this to false will not save scanned codes in the history.
+ */
+ public static final String SAVE_HISTORY = "SAVE_HISTORY";
+
private Scan() {
}
}
diff --git a/android/src/com/google/zxing/client/android/history/HistoryManager.java b/android/src/com/google/zxing/client/android/history/HistoryManager.java
index 0b0615249..5bc5c3317 100644
--- a/android/src/com/google/zxing/client/android/history/HistoryManager.java
+++ b/android/src/com/google/zxing/client/android/history/HistoryManager.java
@@ -19,15 +19,19 @@ package com.google.zxing.client.android.history;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.Cursor;
+import android.net.Uri;
import android.os.Message;
import java.util.List;
import java.util.ArrayList;
import com.google.zxing.BarcodeFormat;
+import com.google.zxing.client.android.Intents;
import com.google.zxing.client.android.R;
import com.google.zxing.client.android.CaptureActivity;
import com.google.zxing.Result;
@@ -39,7 +43,7 @@ import com.google.zxing.Result;
*/
public final class HistoryManager {
- private static final int MAX_ITEMS = 20;
+ private static final int MAX_ITEMS = 50;
private static final String[] TEXT_COL_PROJECTION = { DBHelper.TEXT_COL };
private static final String[] TEXT_FORMAT_COL_PROJECTION = { DBHelper.TEXT_COL, DBHelper.FORMAT_COL };
private static final String[] ID_COL_PROJECTION = { DBHelper.ID_COL };
@@ -75,15 +79,24 @@ public final class HistoryManager {
public AlertDialog buildAlert() {
final List items = getHistoryItems();
- final String[] dialogItems = new String[items.size() + 1];
+ final String[] dialogItems = new String[items.size() + 2];
for (int i = 0; i < items.size(); i++) {
dialogItems[i] = items.get(i).getText();
}
- dialogItems[dialogItems.length - 1] = activity.getResources().getString(R.string.history_clear_text);
+ final Resources res = activity.getResources();
+ dialogItems[dialogItems.length - 2] = res.getString(R.string.history_send);
+ dialogItems[dialogItems.length - 1] = res.getString(R.string.history_clear_text);
DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
if (i == dialogItems.length - 1) {
clearHistory();
+ } else if (i == dialogItems.length - 2) {
+ String history = buildHistory();
+ Intent intent = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
+ intent.putExtra(Intent.EXTRA_SUBJECT, res.getString(R.string.history_email_title));
+ intent.putExtra(Intent.EXTRA_TEXT, history);
+ intent.setType("text/plain");
+ activity.startActivity(intent);
} else {
Result result = items.get(i);
Message message = Message.obtain(activity.getHandler(), R.id.decode_succeeded, result);
@@ -99,6 +112,10 @@ public final class HistoryManager {
public void addHistoryItem(Result result) {
+ if (!activity.getIntent().getBooleanExtra(Intents.Scan.SAVE_HISTORY, true)) {
+ return; // Do not save this item to the history.
+ }
+
SQLiteOpenHelper helper = new DBHelper(activity);
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = null;
@@ -149,6 +166,28 @@ public final class HistoryManager {
}
}
+ private String buildHistory() {
+ StringBuilder historyText = new StringBuilder();
+ SQLiteOpenHelper helper = new DBHelper(activity);
+ SQLiteDatabase db = helper.getReadableDatabase();
+ Cursor cursor = null;
+ try {
+ cursor = db.query(DBHelper.TABLE_NAME,
+ TEXT_COL_PROJECTION,
+ null, null, null, null,
+ DBHelper.TIMESTAMP_COL + " DESC");
+ while (cursor.moveToNext()) {
+ historyText.append(cursor.getString(0)).append('\n');
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ db.close();
+ }
+ return historyText.toString();
+ }
+
void clearHistory() {
SQLiteOpenHelper helper = new DBHelper(activity);
SQLiteDatabase db = helper.getWritableDatabase();