mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -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"/>
|
<category android:name="android.intent.category.DEFAULT"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</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>
|
</application>
|
||||||
<uses-permission android:name="android.permission.CAMERA"/>
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
<uses-permission android:name="android.permission.READ_CONTACTS"/>
|
<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>
|
<resources>
|
||||||
<string name="app_name">Barcode Scanner</string>
|
<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_calendar">Add event to calendar</string>
|
||||||
<string name="button_add_contact">Add contact</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;
|
package com.google.zxing.client.android;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.provider.Browser;
|
||||||
import android.provider.Contacts;
|
import android.provider.Contacts;
|
||||||
import android.text.ClipboardManager;
|
import android.text.ClipboardManager;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
|
||||||
|
@ -90,10 +89,8 @@ public final class ShareActivity extends Activity {
|
||||||
|
|
||||||
private final Button.OnClickListener mBookmarkListener = new Button.OnClickListener() {
|
private final Button.OnClickListener mBookmarkListener = new Button.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// FIXME: Not working yet
|
Intent intent = new Intent(Intent.ACTION_PICK);
|
||||||
Intent intent = new Intent();
|
intent.setClassName(ShareActivity.this, BookmarkPickerActivity.class.getName());
|
||||||
intent.setComponent(new ComponentName("com.android.browser",
|
|
||||||
"com.android.browser.BrowserBookmarksPage"));
|
|
||||||
startActivityForResult(intent, PICK_BOOKMARK);
|
startActivityForResult(intent, PICK_BOOKMARK);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -116,8 +113,7 @@ public final class ShareActivity extends Activity {
|
||||||
if (resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
switch (requestCode) {
|
switch (requestCode) {
|
||||||
case PICK_BOOKMARK:
|
case PICK_BOOKMARK:
|
||||||
// FIXME: Implement
|
showTextAsBarcode(intent.getStringExtra(Browser.BookmarkColumns.URL));
|
||||||
Log.v("BOOKMARK", intent.toString());
|
|
||||||
break;
|
break;
|
||||||
case PICK_CONTACT:
|
case PICK_CONTACT:
|
||||||
// Data field is content://contacts/people/984
|
// 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,
|
* 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.
|
* then sends an Encode intent to render it as a QR Code.
|
||||||
|
|
Loading…
Reference in a new issue