我正在使用一个简单的短信应用程序,正在使用以下代码在加载线程列表时获取线程ID,但是我不知道如何使用线程ID获取联系人ID。我是root用户,并且使用root资源管理器,我可以在数据库中看到一个带有以下各列的联系人表
thread_id | htcthread_id | contact_id
因此,由于我具有线程ID,因此我应该能够获取联系人ID,但我还需要确保该方法在所有设备上均有效。我的应用不是root用户
获取线程ID的代码
Uri uri = Uri.parse("content://mms-sms/conversations?simple=true"); Cursor c = context.getContentResolver().query(uri, null, null, null, "date desc"); if (c.getCount() > 0) { while (c.moveToNext()){ //thread id is c.getString(c.getColumnIndexOrThrow("_id")) } } c.close
我恢复所有联系人的解决方案:
Cursor cursor = null; try { cursor = context.getContentResolver().query(Phone.CONTENT_URI, null, null, null, null); int contactIdIdx = cursor.getColumnIndex(Phone._ID); int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME); int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER); int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_ID); cursor.moveToFirst(); do { String idContact = cursor.getString(contactIdIdx); String name = cursor.getString(nameIdx); String phoneNumber = cursor.getString(phoneNumberIdx); //... } while (cursor.moveToNext()); } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } }
您需要在清单中获得以下许可:
<uses-permission android:name="android.permission.READ_CONTACTS" />
希望我能对您有所帮助!