在我的应用中,我需要将用户指向联系人列表,然后接收选择。 我找到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
是的,我已设置权限。
有什么想法吗? 谢谢!
答案 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