mirror of
https://github.com/zxing/zxing.git
synced 2024-11-09 20:44:03 -08:00
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:
parent
acd409b094
commit
bbbef0d716
|
@ -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"/>
|
||||
|
|
37
android/res/layout/bookmark_picker_list_item.xml
Normal file
37
android/res/layout/bookmark_picker_list_item.xml
Normal 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>
|
|
@ -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>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue