• 欢迎访问,如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

魅族手机获取通讯录报错。麻烦帮本人看看好吗

移动开发 码拜 3年前 (2017-04-20) 318次浏览
其他手机测试都没有问题,用了一个同事的魅族手机就报错
代码如下:
if (resultCode == Activity.RESULT_OK) {
ContentResolver reContentResolverol = getContentResolver();
// URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集
Uri contactData = data.getData();
// 查询就是输入URI等参数,其中URI是必须的,其他是可选的,假如系统能找到URI对应的ContentProvider将返回一个Cursor对象.
Cursor cursor = reContentResolverol.query(contactData, null, null, null, null);
cursor.moveToFirst();
// 条件为联系人ID
String contactId = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts._ID));

// 获得DATA表中的电话号码,条件为联系人ID,原因是手机号码可能会有多个
Cursor phone = reContentResolverol.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + ” = ”
+ contactId, null, null);
while (phone.moveToNext()) {
usernumber = phone
.getString(phone
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
number.setText(usernumber);
}
}
报错信息:(1) Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { dat=content://…….
(2)android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
获取通讯录人的id 时候就会爆那个越界错误
解决方案

20

建议先检查一下魅族手机上的联系人保存的位置

10

这个需要代码里面检测下能否有权限,本人刚解决这个问题。cursor.moveToFirst()为false情况下说明没有权限

5

CursorIndexOutOfBoundsException
你程序也写得有问题.
查询后至少得判断有没有结果, 再根据索引取值吧.   你把判断这步都省了….

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明魅族手机获取通讯录报错。麻烦帮本人看看好吗
喜欢 (0)
[1034331897@qq.com]
分享 (0)