import android.provider.Contacts;
import android.provider.BaseColumns;
import android.text.ClipboardManager;
+import android.util.Log;
import android.view.View;
import android.widget.Button;
+import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.android.Intents;
import com.google.zxing.client.android.Contents;
import com.google.zxing.client.android.R;
* @author dswitkin@google.com (Daniel Switkin)
*/
public final class ShareActivity extends Activity {
+
+ private static final String TAG = ShareActivity.class.getSimpleName();
+
private static final int PICK_BOOKMARK = 0;
private static final int PICK_CONTACT = 1;
+ private static final int PICK_APP = 2;
//private static final int METHODS_ID_COLUMN = 0;
private static final int METHODS_KIND_COLUMN = 1;
private final Button.OnClickListener contactListener = new Button.OnClickListener() {
public void onClick(View v) {
- startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.People.CONTENT_URI),
- PICK_CONTACT);
+ Intent intent = new Intent(Intent.ACTION_PICK, Contacts.People.CONTENT_URI);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ startActivityForResult(intent, PICK_CONTACT);
}
};
private final Button.OnClickListener bookmarkListener = new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.setClassName(ShareActivity.this, BookmarkPickerActivity.class.getName());
startActivityForResult(intent, PICK_BOOKMARK);
}
};
+ private final Button.OnClickListener appListener = new Button.OnClickListener() {
+ public void onClick(View v) {
+ Intent intent = new Intent(Intent.ACTION_PICK);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+ intent.setClassName(ShareActivity.this, AppPickerActivity.class.getName());
+ startActivityForResult(intent, PICK_APP);
+ }
+ };
+
private final Button.OnClickListener clipboardListener = new Button.OnClickListener() {
public void onClick(View v) {
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
// Should always be true, because we grey out the clipboard button in onResume() if it's empty
if (clipboard.hasText()) {
Intent intent = new Intent(Intents.Encode.ACTION);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT);
- intent.putExtra(Intents.Encode.DATA, clipboard.getText());
- intent.putExtra(Intents.Encode.FORMAT, Contents.Format.QR_CODE);
+ intent.putExtra(Intents.Encode.DATA, clipboard.getText().toString());
+ intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString());
startActivity(intent);
}
}
super.onCreate(icicle);
setContentView(R.layout.share);
- Button mContactButton = (Button) findViewById(R.id.contact_button);
- mContactButton.setOnClickListener(contactListener);
- Button mBookmarkButton = (Button) findViewById(R.id.bookmark_button);
- mBookmarkButton.setOnClickListener(bookmarkListener);
+ findViewById(R.id.contact_button).setOnClickListener(contactListener);
+ findViewById(R.id.bookmark_button).setOnClickListener(bookmarkListener);
+ findViewById(R.id.app_button).setOnClickListener(appListener);
clipboardButton = (Button) findViewById(R.id.clipboard_button);
clipboardButton.setOnClickListener(clipboardListener);
}
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PICK_BOOKMARK:
+ case PICK_APP:
showTextAsBarcode(intent.getStringExtra(Browser.BookmarkColumns.URL));
break;
case PICK_CONTACT:
}
private void showTextAsBarcode(String text) {
+ Log.i(TAG, "Showing text as barcode: " + text);
+ if (text == null) {
+ return; // Show error?
+ }
Intent intent = new Intent(Intents.Encode.ACTION);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Intents.Encode.TYPE, Contents.Type.TEXT);
intent.putExtra(Intents.Encode.DATA, text);
- intent.putExtra(Intents.Encode.FORMAT, Contents.Format.QR_CODE);
+ intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString());
startActivity(intent);
}
* @param contactUri A Uri of the form content://contacts/people/17
*/
private void showContactAsBarcode(Uri contactUri) {
+ Log.i(TAG, "Showing contact URI as barcode: " + contactUri);
+ if (contactUri == null) {
+ return; // Show error?
+ }
ContentResolver resolver = getContentResolver();
Cursor contactCursor = resolver.query(contactUri, null, null, null, null);
Bundle bundle = new Bundle();
}
Intent intent = new Intent(Intents.Encode.ACTION);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra(Intents.Encode.TYPE, Contents.Type.CONTACT);
intent.putExtra(Intents.Encode.DATA, bundle);
- intent.putExtra(Intents.Encode.FORMAT, Contents.Format.QR_CODE);
+ intent.putExtra(Intents.Encode.FORMAT, BarcodeFormat.QR_CODE.toString());
+ Log.i(TAG, "Sending bundle for encoding: " + bundle);
startActivity(intent);
}
}