我想显示设备中的消息总数

时间:2018-07-18 09:52:35

标签: java android

有没有一种方法可以确定我们设备中的消息总数。

我尝试了以下方法来查找通话数量:

Uri allCalls = Uri.parse("content://call_log/calls");
                Cursor c = managedQuery(allCalls, null, null, null, null);

                count= c.getCount();

                Log.i("TAG",Integer.toString(count));

但是当我尝试类似logcat中的消息时,无法查看任何数字。

2 个答案:

答案 0 :(得分:0)

尝试此代码以获取所有消息

public List<String> getSMS(){
List<String> sms = new ArrayList<String>();
Uri uriSMSURI = Uri.parse("content://sms/inbox");
Cursor cur = getContentResolver().query(uriSMSURI, null, null, null, null);

while (cur != null && cur.moveToNext()) {
    String address = cur.getString(cur.getColumnIndex("address"));
    String body = cur.getString(cur.getColumnIndexOrThrow("body"));
    sms.add("Number: " + address + " .Message: " + body);  
}

if (cur != null) {
    cur.close();
}
return sms;
}

只需调用该方法,您将收到所有消息的ArrayList

答案 1 :(得分:0)

获取收件箱中的邮件列表,如下所示:

首先在Manifest.xml中添加权限以读取短信:

<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

 public ArrayList<String> fetchInbox()
{
    ArrayList<String> sms = new ArrayList();

    //Read Draft message only by "content://sms/draft"
    //Read Sent message only by "content://sms/sent"

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

    cursor.moveToFirst();
    while  (cursor.moveToNext())
    {
           String address = cursor.getString(1);
           String body = cursor.getString(3);

           sms.add(body);
    }
    return sms;

}

您可以通过sms.size();

获取短信计数