为了他人的利益,使用从 ACTION_PICK 意图获得的联系人的 URI 启动 ACTION_DIAL/ACTION_CALL 意图不起作用。这是一个无效的参数。
所以我不得不通过几个查询来确定联系人的电话号码。我也只寻找“主要”电话。
我执行任务的代码如下,也许我不需要执行初始查询来获取 ID,因为我已经有了 URI,但我还没有找到替代方案,所以如果有人可以提出其他建议请告诉我:-),
// passing in String uri - obtained via contacts based ACTION_PICK
String contactId = null;
Cursor contactCursor = callingActivity.managedQuery(Uri.parse(uri), null, null, null, null);
if (contactCursor.moveToFirst())
{
contactId =
contactCursor.getString(contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
}
Cursor c = callingActivity.managedQuery(Data.CONTENT_URI,
new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
Data.CONTACT_ID + "=?" + " AND "
+ Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE
+ "' AND " + Phone.IS_PRIMARY + " != 0",
new String[] {contactId}, null);
if (c.moveToNext()) {
result = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER));
if (DEBUG) Log.d(TAG, "GOT PHONE : "+c.getString(c.getColumnIndexOrThrow(Phone.NUMBER)) + ","
+c.getString(c.getColumnIndexOrThrow(Phone.LABEL)) + ","
+c.getString(c.getColumnIndexOrThrow(Phone.TYPE)));
}
www.dbws.net