我无法使任何解决方案有效......结果始终是应用程序崩溃。我成功地创建了一个listView,添加了项目并获得了所选项目,但我错过了将列表中的元素作为联系人的名称而不是随机的名称。
一旦被选中,我会在另一项活动中询问他们的数字和PutExtra。
编辑:正如所建议的,这是我正在努力工作的代码:
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
我会将此插入到每个联系人的for循环中,每次将字符串name和phoneNumber添加到ArrayList。但是,当我按下应该运行此代码的按钮(并且按钮工作正常)时,我从Android Monitor获得了一长串错误(这是第一行):
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
我已将权限添加到清单中:
<uses-permission android:name="android.permission.READ_CONTACTS" />
你能帮帮我吗?谢谢!
P.S。我尝试了this previus主题的多个解决方案,它们都不适合我......
答案 0 :(得分:0)
<强>解决强>
这完全是应用许可的问题。使用android 6.0 Marshmallow,您必须直接在Java代码中请求权限(在onCreate方法期间);稍后我会发布一些示例代码。
非常感谢我的朋友Blitzuda帮我解决了我的问题!