我的目标是只向用户显示带有电话号码的联系人,并让用户选择一些我想在本地存储的联系人。
我在下面的方法中使用了各种选项来代替 ContactsContract.Contacts.CONTENT_URI。但是我得到了很多显示的联系人(很多都是垃圾邮件,只有电子邮件 ID)。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_selector);
((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(contactIntent, 1);
}
});
}
如果我将 ContactsContract.Contacts.CONTENT_URI 作为上述方法的参数传递,并且在以下处理程序方法的情况下,查询方法的 String[] 作为投影参数(显示为注释),则该方法将失败并出现 java.lang.IllegalArgumentException。如果我在下面的方法中传递 null,那么无论我选择什么联系人,我都找不到任何与电话号码或电子邮件相关的列。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(data != null)
{
Uri uri = data.getData();
if(uri != null)
{
Cursor c = null;
try
{
c = getContentResolver().query(uri, null
// new String[] {
//ContactsContract.CommonDataKinds.Phone.NUMBER,
//ContactsContract.CommonDataKinds.Phone.TYPE},
, null, null, null);
if(c != null && c.moveToFirst())
{
String number = c.getString(0);
String type = c.getString(1);
}
}
finally
{
if(c != null && !c.isClosed())
c.close();
}
}
}
}
当用户访问电话簿并且有可用的电话号码时,有什么方法可以只显示用户通常可见的联系人?
我尝试浏览 stackoverflow 和其他站点中的所有线程,但找不到任何解决此问题的解决方案,尽管很多人已经发布了这个问题。我在 Android 平台上工作不多,我可能错过了一些小细节,我相信必须有一种简单的方法来实现这一点。
请建议。感谢你的帮助。
谢谢。