0

我试图通过 ContactsContract 使用查询获取联系人以下代码引发异常。java.lang.ClassCastException。

public class ContactManager extends Activity{

    ArrayList<String> contactsList = new ArrayList<String>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String[] contacts = getContactNames();
    }

        public String[] getContactNames(){
            try{
        Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
                null, null, null, null);


        while (cursor.moveToNext()) { 

              contactsList.add(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)));
        }
        return (String []) contactsList.toArray();

        }
        catch(Exception e){
            Log.e("WOw", e.toString());
            return null;
    }
        }
        }

任何的想法?我没有忘记添加权限

4

1 回答 1

0

该方法toArray()返回一个数组,Object它不能转换为一个数组String

您必须为方法提供一个参数来指定类型:

return (String[]) contactsList.toArray(new String[contactsList.size()]);

您将在文档中找到更多详细信息。

于 2012-06-17T16:28:09.907 回答