他の人の利益のために、ACTION_PICKインテントから取得した連絡先のURIを使用してACTION_DIAL/ACTION_CALLインテントを起動することは機能しません。無効なパラメータです。
そのため、いくつかのクエリを使用して、連絡先の電話番号を特定する必要がありました。また、「プライマリ」電話のみを探します。
タスクを実行するための私のコードは次のとおりです。おそらく、私はすでにURIを持っているので、IDを取得するために最初のクエリを実行する必要はありませんが、代替案をまだ見つけていません。知る :-) 、
// 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