Gis*_*ela 6 android android-contacts start-activity
可以轻松打开Android联系人应用程序以显示所有联系人并选择其中一个:
在活动中:
private int PICK_CONTACT = 853456;
// ...
// open contact list
void openContactPicker() {
Intent it= new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
startActivityForResult(it, PICK_CONTACT);
}
// when back from intent: use pick result
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// ...
switch (requestCode) {
case PICK_CONTACT:
if (dataOk(data)) {
extractContactInfo(data);
} else {
showErrorMessage();
}
break;
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是是否可以设置一些过滤条件,以便联系应用程序只显示那些具有指定元素的联系人 - 例如完整的邮政信息,或正确的电子邮件或电话号码?
我的应用程序需要邮政信息,当前实现的工作流程是这样的:
由于许多联系人没有邮政信息,因此在大多数情况下会显示一个消息框"抱歉没有可用于此联系人的邮政信息".这不是一种可接受的行为.
一种替代方案是 - 我只是实现这一点 - 查询应用程序内的联系人数据库并在我自己的代码中进行过滤,但使用这种方法有一些含义:
因此,为Contacts App设置一些标准似乎是一种更优雅的方式.
该应用程序应在Android 2.3.3及更高版本上运行.
问题:
联系人应用程序注册到此意图过滤器
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/contact" />
<data android:mimeType="vnd.android.cursor.dir/person" />
<data android:mimeType="vnd.android.cursor.dir/phone_v2" />
<data android:mimeType="vnd.android.cursor.dir/phone" />
<data android:mimeType="vnd.android.cursor.dir/postal-address_v2" />
<data android:mimeType="vnd.android.cursor.dir/postal-address" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
所以你可以像这样创建你的意图:
private int PICK_CONTACT = 853456;
// ...
// open contact list
void openContactPicker() {
Intent it= new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
it.setType("vnd.android.cursor.dir/postal-address");
startActivityForResult(it, PICK_CONTACT);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |