首页 > 解决方案 > 如何读取来自特定电话号码的传入消息的内容

问题描述

我想阅读来自特定联系人的传入消息的内容

这是我为获取传入消息而编写的代码。

public void doRead ( View v){
 ListView listitem=(ListView)findViewById(R.id.listView);
    Uri mSmsQueryUri = Uri.parse("content://sms/inbox");
    List<String> messages = new ArrayList<String>();

    Cursor cursor = null;
    try {
        cursor = getContentResolver().query(mSmsQueryUri, null, null, null, null);
        if (cursor == null) {
            // Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);

        }
        for (boolean hasData = cursor.moveToFirst(); hasData; hasData = cursor.moveToNext()) {
            final String body = cursor.getString(cursor.getColumnIndexOrThrow("body")).toString();
            final String sender_no = cursor.getString(cursor.getColumnIndexOrThrow("address")).toString();
            final String date= cursor.getString(cursor.getColumnIndexOrThrow("date"));
            final String type =cursor.getString(cursor.getColumnIndexOrThrow("type"));


            messages.add(body);
            messages.add(sender_no);
            messages.add(date);
            messages.add(type);
        }
    } catch (Exception e) {
        //Log.e(TAG, e.getMessage());
    } finally {
        cursor.close();
    }

    listitem.setAdapter(new ArrayAdapter<String>(Reader.this, android.R.layout.simple_list_item_1,messages));
}
}

标签: android

解决方案


修改您的查询以按电话号码过滤

String[] phNumber = new String[] { "+000000000000" }; //phone number

    Cursor cursor1 = getContentResolver().query(Uri.parse("content://sms/inbox"), new String[] { "_id", "address","date","body", "type" }, "address=?", phNumber, null);

推荐阅读