android 酷派 选择联系人报错
2015-08-13 11:55
417 查看
遇到一个bug,酷派手机在执行以下代码时会报错
应该是因为没有实现返回带电话的联系人信息导致的。注释掉 i.setType("vnd.android.cursor.dir/phone"); 即可正常运行,但是在
Intent i = new Intent(Intent.ACTION_PICK); i.setType("vnd.android.cursor.dir/phone"); startActivityForResult(i, SELECTNUMBER);
protected void onActivityResult(int requestCode, int resultCode, Intent dataIntent) { super.onActivityResult(requestCode, resultCode, dataIntent); if (requestCode == SELECTNUMBER && resultCode == RESULT_OK) { if (dataIntent == null) { return; } Uri uri = dataIntent.getData(); Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor.moveToFirst()) {
name.setText(cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NAME)) + ""); phone.setText(cursor.getString(cursor.getColumnIndexOrThrow(Contacts.Phones.NUMBER)) + "");
if (Build.VERSION.SDK_INT < 14) { cursor.close(); }
}
}
应该是因为没有实现返回带电话的联系人信息导致的。注释掉 i.setType("vnd.android.cursor.dir/phone"); 即可正常运行,但是在
onActivityResult无法通过游标获取到联系人姓名和电话。 网上查了后改为先读取联系人id,然后再去查找电话号码,这么一改代码臃肿了很多,不过为了兼容酷派也没办法.代码如下:
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); if (getPackageManager().resolveActivity(intent, 0) != null) { startActivityForResult(intent, SELECTNUMBER); } else { showMsg("您的手机不支持选择通讯录联系人"); }
protected void onActivityResult(int requestCode, int resultCode, Intent dataIntent) { super.onActivityResult(requestCode, resultCode, dataIntent); if (requestCode == SELECTNUMBER && resultCode == RESULT_OK) { if (dataIntent == null) { return; } Uri contactData = dataIntent.getData(); Cursor cursor = managedQuery(contactData, null, null, null, null); String id = ""; if (cursor.moveToFirst()) { name.setText(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + "");//name为TextView String haanumber = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); if (haanumber.equalsIgnoreCase("1")) { Cursor phones =getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + id, null, null); while (phones.moveToNext()) { phone.setText(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));//phone为TextView
} if (Build.VERSION.SDK_INT < 14) { phones.close(); } } if (Build.VERSION.SDK_INT < 14) { cursor.close(); } } } }
相关文章推荐
- Android中文API(114)——TabWidget
- android与C# WebService基于ksoap通信(C#篇)
- Android内存机制分析上篇:了解Android堆和栈
- Android QQ第三方登录(二)
- Android Canvas drawText实现中文垂直居中
- [Android基础]Android中如何使用Intent传递对象
- Android插件化开发之OpenAtlas生成插件信息列表
- cordova platform add android 国内慢
- ArcGIS for Android 设置地图网格背景
- Android 关于fragment切换
- Android应用如何反馈Crash报告
- Android设置横屏和竖屏的方法
- Android HAL层解析
- Android 知识梳理
- android 进程和线程管理
- android 4.4 js调用webview activity方法记载
- Cool Android Apis 整理(一)
- Android百分比布局支持库介绍——com.android.support:percent
- Android结合volley的netWorkImageview实现图片文件缓存
- Android FragmentManage FragmentTransaction介绍(一)