Handling ACTION_SEND
I want to handle ACTION_SEND intent. So i get an uri of 开发者_C百科the shared item using this code:
Bundle extras = intent.getExtras();
if (extras.containsKey(Intent.EXTRA_STREAM))
{
Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
....
this uri is something like this:
content://com.android.contacts/contacts/as_vcard/0n3B4537432F4531
How i can get exact contact from this uri?
I tried this:
Cursor cursor = managedQuery(uri, null, null, null, null);
and this:
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
and got an exception and program termination in both cases.
Please help!
Just remove as_vcard in content://com.android.contacts/contacts/as_vcard/0n3B4537432F4531
If it does not work try this.
String key= uri.getPathSegments().get(2);
Cursor cursor = getContentResolver().query(Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, key),
null, null, null, null);
If you receive a content://
URI in an EXTRA_STREAM
you should be able to query OpenableColumns
to get the meta information.
String name = null;
String size = null;
Cursor cursor = getContentResolver().query(uri, new String[] { OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE }, null, null, null);
if (cursor != null) {
try {
if (cursor.moveToFirst()) {
name = cursor.getString(0);
size = cursor.getString(1);
}
} finally {
cursor.close();
}
}
To get the actual content use ContentResolver.openInputStream(Uri)
and read the stream. Don't forget to close it afterwards.
精彩评论