<string name="msg_encode_contents_failed">Could not encode a barcode from the data provided.
</string>
<string name="msg_encode_in_progress">Generating a barcode\u2026</string>
+ <string name="msg_intent_failed">Sorry, the requested application could not be launched.
+ The barcode contents may be invalid.</string>
<string name="msg_sbc_book_not_searchable">Sorry, this book is not searchable.</string>
<string name="msg_sbc_failed">Sorry, the search encountered a problem.</string>
<string name="msg_sbc_no_page_returned">No page returned</string>
<string name="sbc_name">Google Book Search</string>
<string name="share_name">Share via barcode</string>
- <string name="title_about">About Barcode Scanner</string>
+ <string name="title_about">Barcode Scanner v</string>
<string name="zxing_url">http://code.google.com/p/zxing</string>
- <string name="zxing_user_agent">ZXing-Android/1.1</string>
</resources>
private boolean mCopyToClipboard;
private boolean mScanIntent;
private String mDecodeMode;
+ private String versionName;
private final OnCompletionListener mBeepListener = new BeepListener();
}
case ABOUT_ID:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.title_about);
+ builder.setTitle(getString(R.string.title_about) + versionName);
builder.setMessage(getString(R.string.msg_about) + "\n\n" + getString(R.string.zxing_url));
builder.setIcon(R.drawable.zxing_icon);
builder.setPositiveButton(R.string.button_open_browser, mAboutListener);
try {
PackageInfo info = getPackageManager().getPackageInfo(PACKAGE_NAME, 0);
int currentVersion = info.versionCode;
+ // Since we're paying to talk to the PackageManager anyway, it makes sense to cache the app
+ // version name here for display in the about box later.
+ this.versionName = info.versionName;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
int lastVersion = prefs.getInt(PreferencesActivity.KEY_HELP_VERSION_SHOWN, 0);
if (currentVersion > lastVersion) {
public final class SearchBookContentsActivity extends Activity {
private static final String TAG = "SearchBookContents";
+ private static final String USER_AGENT = "ZXing/1.2 (Android)";
private NetworkThread mNetworkThread;
private String mISBN;
private Button mQueryButton;
private ListView mResultListView;
private TextView mHeaderView;
- private String mUserAgent;
@Override
public void onCreate(Bundle icicle) {
mHeaderView = (TextView) factory.inflate(R.layout.search_book_contents_header,
mResultListView, false);
mResultListView.addHeaderView(mHeaderView);
-
- mUserAgent = getString(R.string.zxing_user_agent);
}
@Override
if (mNetworkThread == null) {
String query = mQueryTextView.getText().toString();
if (query != null && query.length() > 0) {
- mNetworkThread = new NetworkThread(mISBN, query, mHandler, mUserAgent);
+ mNetworkThread = new NetworkThread(mISBN, query, mHandler);
mNetworkThread.start();
mHeaderView.setText(R.string.msg_sbc_searching_book);
mResultListView.setAdapter(null);
private final String mISBN;
private final String mQuery;
private final Handler mHandler;
- private final String mUserAgent;
- NetworkThread(String isbn, String query, Handler handler, String userAgent) {
+ NetworkThread(String isbn, String query, Handler handler) {
mISBN = isbn;
mQuery = query;
mHandler = handler;
- mUserAgent = userAgent;
}
@Override
"&jscmd=SearchWithinVolume2&q=" + mQuery, null);
HttpUriRequest get = new HttpGet(uri);
get.setHeader("cookie", getCookie(uri.toString()));
- client = AndroidHttpClient.newInstance(mUserAgent);
+ client = AndroidHttpClient.newInstance(USER_AGENT);
HttpResponse response = client.execute(get);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
if (cookie == null || cookie.length() == 0) {
Log.v(TAG, "Book Search cookie was missing or expired");
HttpUriRequest head = new HttpHead(url);
- AndroidHttpClient client = AndroidHttpClient.newInstance(mUserAgent);
+ AndroidHttpClient client = AndroidHttpClient.newInstance(USER_AGENT);
try {
HttpResponse response = client.execute(head);
if (response.getStatusLine().getStatusCode() == 200) {
package com.google.zxing.client.android.result;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.provider.Contacts;
private void launchIntent(Intent intent) {
if (intent != null) {
- mActivity.startActivity(intent);
+ try {
+ mActivity.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
+ builder.setTitle(mActivity.getString(R.string.app_name));
+ builder.setMessage(mActivity.getString(R.string.msg_intent_failed));
+ builder.setPositiveButton(R.string.button_ok, null);
+ builder.show();
+ }
}
}