访问联系人数据的问题

时间:2011-08-24 01:09:31

标签: android

在我的应用中,我需要将用户指向联系人列表,然后接收选择。 我找到a very descriptive tutorial,但我一直得到一个未被捕获的例外。

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
            case CONTACT_PICKER_RESULT:
                 Bundle extras = data.getExtras();
    Set<String> keys = extras.keySet(); //NullPointerException on this line

    Iterator<String> iterate = keys.iterator();
    while (iterate.hasNext()) {
        String key = iterate.next();
        Log.v(DEBUG_TAG, key + "[" + extras.get(key) + "]");
    }
    Uri result = data.getData();
    Log.v(DEBUG_TAG, "Got a result: "
        + result.toString());
                break;
            }

        } 
    }

编辑: 这是由之前显示的NullPointerException引起的运行时异常。

  

java.lang.RuntimeException:传递结果失败   ResultInfo {who = null,request = 1001,result = -1,data = Intent {   dat = content://com.android.contacts/contacts/lookup/0n293F45435B45/1}}   活动{com.ptylabs.loveyousms / com.myapps.myApp.MyActivity}:   显示java.lang.NullPointerException

是的,我已设置权限。

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果你向我们展示例外,那总是更好。我通常做的是,在分配给Pick Contact Activity的按钮的OnClickListener上执行以下操作:

startActivityForResult(new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI), CONTACT_PICKER_RESULT);

另外,请不要忘记清单文件:

<uses-permission android:name="android.permission.READ_CONTACTS" />

使用这两件事你的代码在这里工作正常。

  

08-24 03:24:48.115:VERBOSE / debug(12600):android.intent.extra.shortcut.NAME [xxxx@hotmail.com]   08-24 03:24:48.115:VERBOSE / debug(12600):得到的结果:content://com.android.contacts/contacts/lookup/45id8ae8460ccfefc0/37