我想处理ACTION_SEND意图。因此,我使用以下代码获得共享项的uri:
Bundle extras = intent.getExtras();
if (extras.containsKey(Intent.EXTRA_STREAM))
{
Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM);
....
这个uri是这样的:
content://com.android.contacts/contacts/as_vcard/0n3B4537432F4531
我如何从这个uri获得确切的联系?
我试过了:
Cursor cursor = managedQuery(uri, null, null, null, null);
:
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
并得到一个异常和程序终止。
请帮忙!
删除content中的as_vcard://com.android.contacts/contacts/as_vcard/0n3B4537432F4531
如果它不工作,试试这个
String key= uri.getPathSegments().get(2);
Cursor cursor = getContentResolver().query(Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, key),
null, null, null, null);
如果您在EXTRA_STREAM
中收到content://
URI,您应该能够查询OpenableColumns
以获取元信息。
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();
}
}
要获取实际内容,请使用ContentResolver.openInputStream(Uri)
并读取流。之后别忘了关闭