某些应用程序(例如壁纸)没有默认活动,并且无法通过启动 Intent 启动,但如果您的上下文正确,您应该能够使用常规 Intent。但是我不确定这是否适用于相关的特定应用程序......
我会假设您制作另一个主屏幕或 rom,这就是您想要这个的原因?
这应该有帮助
通讯录/人脉应用
选择联系人
要让用户选择联系人并为您的应用提供对所有联系人信息的访问权限,请使用 ACTION_PICK 操作并将 MIME 类型指定为 Contacts.CONTENT_TYPE。
传递给您的 onActivityResult() 回调的结果 Intent 包含以下内容:指向所选联系人的 URI。即使您的应用不包含 READ_CONTACTS 权限,响应也会授予您的应用使用 Contacts Provider API 读取该联系人的临时权限。
提示:如果您只需要访问特定的联系信息,例如电话号码或电子邮件地址,请参阅下一部分,了解如何选择特定的联系数据。
动作
ACTION_PICK
数据 URI 方案
没有
MIME 类型
联系人.CONTENT_TYPE
示例意图:
static final int REQUEST_SELECT_CONTACT = 1;
public void selectContact() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_SELECT_CONTACT);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
Uri contactUri = data.getData();
// Do something with the selected contact at contactUri
...
}
}
有关在获得联系人 URI 后如何检索联系人详细信息的信息,请参阅检索联系人的详细信息。请记住,当您使用上述意图检索联系人 URI 时,您不需要 READ_CONTACTS 权限即可读取该联系人的详细信息。
选择具体的联系方式
要让用户从联系人中选择特定信息,例如电话号码、电子邮件地址或其他数据类型,请使用 ACTION_PICK 操作并将 MIME 类型指定为下列内容类型之一,例如作为 CommonDataKinds.Phone.CONTENT_TYPE 来获取联系人的电话号码。
如果您只需要从联系人中检索一种类型的数据,使用 ContactsContract.CommonDataKinds 类中的 CONTENT_TYPE 的这种技术比使用 Contacts.CONTENT_TYPE(如上一节所示)更有效,因为结果为您提供直接访问所需数据,而无需您对 Contacts Provider 执行更复杂的查询。
传递给 onActivityResult() 回调的结果 Intent 包含以下内容:指向所选联系人数据的 URI。即使您的应用不包含 READ_CONTACTS 权限,响应也会授予您的应用读取该联系人数据的临时权限。
动作
ACTION_PICK
数据 URI 方案
没有
MIME 类型
CommonDataKinds.Phone.CONTENT_TYPE
从带有电话号码的联系人中挑选。
CommonDataKinds.Email.CONTENT_TYPE
从具有电子邮件地址的联系人中挑选。
CommonDataKinds.StructuredPostal.CONTENT_TYPE
从具有邮政地址的联系人中挑选。
或 ContactsContract 下的许多其他 CONTENT_TYPE 值之一。
示例意图:
static final int REQUEST_SELECT_PHONE_NUMBER = 1;
public void selectContact() {
// Start an activity for the user to pick a phone number from contacts
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
// Get the URI and query the content provider for the phone number
Uri contactUri = data.getData();
String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
Cursor cursor = getContentResolver().query(contactUri, projection,
null, null, null);
// If the cursor returned is valid, get the phone number
if (cursor != null && cursor.moveToFirst()) {
int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(numberIndex);
// Do something with the phone number
...
}
}
}
我会在这里介绍你
http://developer.android.com/guide/components/intents-common.html