我正在开发一个简单的短信应用程序,我正在使用下面的代码在加载我的线程列表时获取线程 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();
}
}
您的 list 中需要此权限:
<uses-permission android:name="android.permission.READ_CONTACTS" />
希望对你有所帮助!
关于Android从线程id获取联系人id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696264/