将联系人的姓名和电话存储到ArrayList中

时间:2016-09-22 22:12:10

标签: android arraylist android-contacts contactscontract

我无法使任何解决方案有效......结果始终是应用程序崩溃。我成功地创建了一个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主题的多个解决方案,它们都不适合我......

1 个答案:

答案 0 :(得分:0)

<强>解决

这完全是应用许可的问题。使用android 6.0 Marshmallow,您必须直接在Java代码中请求权限(在onCreate方法期间);稍后我会发布一些示例代码。

非常感谢我的朋友Blitzuda帮我解决了我的问题!