Wrote a new bookmark picker activity for use by the Share button, because I couldn't get the platform version to work.

git-svn-id: https://zxing.googlecode.com/svn/trunk@691 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
dswitkin 2008-11-12 15:42:44 +00:00
parent acd409b094
commit bbbef0d716
5 changed files with 135 additions and 8 deletions

View file

@ -78,6 +78,13 @@ versionName is 2.31, 2.4, or 3.0. -->
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name="BookmarkPickerActivity"
android:label="@string/bookmark_picker_name">
<intent-filter>
<action android:name="android.intent.action.PICK"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>

View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2008 ZXing authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="4px">
<TextView android:id="@+id/bookmark_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:singleLine="true"/>
<TextView android:id="@+id/bookmark_url"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:singleLine="false"/>
</LinearLayout>

View file

@ -16,6 +16,7 @@
-->
<resources>
<string name="app_name">Barcode Scanner</string>
<string name="bookmark_picker_name">Bookmarks</string>
<string name="button_add_calendar">Add event to calendar</string>
<string name="button_add_contact">Add contact</string>

View file

@ -0,0 +1,79 @@
/*
* Copyright (C) 2008 ZXing authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.zxing.client.android;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Browser;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
/**
* This class is only needed because I can't successfully send an ACTION_PICK intent to
* com.android.browser.BrowserBookmarksPage. It can go away if that starts working in the future.
*/
public class BookmarkPickerActivity extends ListActivity {
private static final String[] BOOKMARK_PROJECTION = {
Browser.BookmarkColumns.TITLE,
Browser.BookmarkColumns.URL
};
private static final int[] TWO_LINE_VIEW_IDS = {
R.id.bookmark_title,
R.id.bookmark_url
};
private static final int TITLE_COLUMN = 0;
private static final int URL_COLUMN = 1;
// Without this selection, we'd get all the history entries too
private static final String BOOKMARK_SELECTION = "bookmark = 1";
private Cursor mCursor;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
mCursor = getContentResolver().query(Browser.BOOKMARKS_URI, BOOKMARK_PROJECTION,
BOOKMARK_SELECTION, null, null);
startManagingCursor(mCursor);
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.bookmark_picker_list_item,
mCursor, BOOKMARK_PROJECTION, TWO_LINE_VIEW_IDS);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View view, int position, long id) {
if (mCursor.moveToPosition(position)) {
Intent intent = new Intent();
intent.putExtra(Browser.BookmarkColumns.TITLE, mCursor.getString(TITLE_COLUMN));
intent.putExtra(Browser.BookmarkColumns.URL, mCursor.getString(URL_COLUMN));
setResult(RESULT_OK, intent);
} else {
setResult(RESULT_CANCELED);
}
finish();
}
}

View file

@ -17,16 +17,15 @@
package com.google.zxing.client.android;
import android.app.Activity;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Browser;
import android.provider.Contacts;
import android.text.ClipboardManager;
import android.util.Log;
import android.view.View;
import android.widget.Button;
@ -90,10 +89,8 @@ public final class ShareActivity extends Activity {
private final Button.OnClickListener mBookmarkListener = new Button.OnClickListener() {
public void onClick(View v) {
// FIXME: Not working yet
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.browser",
"com.android.browser.BrowserBookmarksPage"));
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setClassName(ShareActivity.this, BookmarkPickerActivity.class.getName());
startActivityForResult(intent, PICK_BOOKMARK);
}
};
@ -116,8 +113,7 @@ public final class ShareActivity extends Activity {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PICK_BOOKMARK:
// FIXME: Implement
Log.v("BOOKMARK", intent.toString());
showTextAsBarcode(intent.getStringExtra(Browser.BookmarkColumns.URL));
break;
case PICK_CONTACT:
// Data field is content://contacts/people/984
@ -127,6 +123,13 @@ public final class ShareActivity extends Activity {
}
}
private void showTextAsBarcode(String text) {
Intent intent = new Intent(Intents.Encode.ACTION);
intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT);
intent.putExtra(Intents.Encode.DATA, text);
startActivity(intent);
}
/**
* Takes a contact Uri and does the necessary database lookups to retrieve that person's info,
* then sends an Encode intent to render it as a QR Code.