Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android从线程id获取联系人id_Android_Sql_Sms - Fatal编程技术网

Android从线程id获取联系人id

Android从线程id获取联系人id,android,sql,sms,Android,Sql,Sms,我正在开发一个简单的sms应用程序,在加载我的线程列表时,我使用下面的代码获取线程id,但我不知道如何使用线程id获取联系人id。我是root,使用root资源管理器,我可以在数据库中看到有一个包含以下列的联系人表 thread_id | htcthread_id | contact_id 因此,由于我有线程id,我应该能够获得联系人id,但我还需要确保这在所有设备上都有效。顺便说一下,我的应用程序不是root 获取线程id的代码 Uri uri = Uri.parse("content://m

我正在开发一个简单的sms应用程序,在加载我的线程列表时,我使用下面的代码获取线程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" />


我希望我帮助过你

恢复所有联系人的我的解决方案:

    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" />


我希望我帮助过你

好吧,那怎么回答我的问题呢?我并不是想得到所有的联系人,我只是想得到一个基于idokay线程的联系人信息,但这如何回答我的问题呢?我并不是想得到所有的联系人,我只是想得到基于线程id的联系人信息