开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜