Android 阅读日期后收到的短信

Android 阅读日期后收到的短信,android,sms,uri,Android,Sms,Uri,我正在阅读约会后收到的所有短信 代码如下: Uri SMS_CONTENT_URI = Uri.parse("content://sms"); Uri SMS_INBOX_CONTENT_URI = Uri.withAppendedPath(SMS_CONTENT_URI, "inbox"); Cursor cursor = context.getContentResolver().query( SMS_INBOX_CONTENT_URI, new String[] { "_id" },

我正在阅读约会后收到的所有短信

代码如下:

Uri SMS_CONTENT_URI = Uri.parse("content://sms");  
Uri SMS_INBOX_CONTENT_URI = Uri.withAppendedPath(SMS_CONTENT_URI, "inbox");

Cursor cursor = context.getContentResolver().query( SMS_INBOX_CONTENT_URI, new String[] { "_id" }, "date>=61291393200000", null, null);  
//61291393200000 = 03/01/12
这将返回一个空游标

当我执行此代码时:

Cursor cursor = context.getContentResolver().query( SMS_INBOX_CONTENT_URI, new String[] { "_id" }, "read=1", null, null);
把所有的短信都还给我了

有人知道如何按日期过滤短信吗

我也尝试在发送短信中执行,但遇到了相同的问题。

您是否尝试了“date>='61291393200000'

似乎数值SQL语句需要一个引号“xxx”。

您是否尝试过“date>='61291393200000'


似乎数值SQL语句需要一个引号“xxx”。

我使用以下代码在特定日期后检索sms消息

// First select the date shown by the datepicker.
// Here I am assuming that a DatePicker object is already created with id dpResult
// to select a particular date.
DatePicker datePicker = (DatePicker) findViewById(R.id.dpResult);


// Now create a SimpleDateFormat object.        
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

// Add 1 in month as its 0 based indexing in datePicker but not in SimpleDateFormat
String selectedDate = datePicker.getYear() + "-" +  (datePicker.getMonth() + 1) + "-" +    datePicker.getDayOfMonth();

// Now create a start time for this date in order to setup the filter.
Date dateStart = formatter.parse(selectedDate + "T00:00:00");

// Now create the filter and query the messages.
String filter = "date>=" + dateStart.getTime();
final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(SMS_INBOX, null, filter, null, null);

while(cursor.moveToNext()) {

    // Perform the required stuff here.             
}
cursor.close();

中获取上述代码片段我使用以下代码检索特定日期后的sms消息

// First select the date shown by the datepicker.
// Here I am assuming that a DatePicker object is already created with id dpResult
// to select a particular date.
DatePicker datePicker = (DatePicker) findViewById(R.id.dpResult);


// Now create a SimpleDateFormat object.        
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

// Add 1 in month as its 0 based indexing in datePicker but not in SimpleDateFormat
String selectedDate = datePicker.getYear() + "-" +  (datePicker.getMonth() + 1) + "-" +    datePicker.getDayOfMonth();

// Now create a start time for this date in order to setup the filter.
Date dateStart = formatter.parse(selectedDate + "T00:00:00");

// Now create the filter and query the messages.
String filter = "date>=" + dateStart.getTime();
final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(SMS_INBOX, null, filter, null, null);

while(cursor.moveToNext()) {

    // Perform the required stuff here.             
}
cursor.close();

//中获取上述代码片段,只需将时间戳作为游标查询中的第三个参数传递即可。您将以升序获得筛选的日期。 请参阅下文

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

            if (cursor.moveToFirst()) { // must check the result to prevent exception
                do {
                    String msgData = "";
                    for(int ati=0;ati<cursor.getColumnCount();ati++)

                    {
                        msgData = "" + cursor.getColumnName(ati) + ":" + cursor.getString(ati);
                       String date= cursor.getString(cursor.getColumnIndex("body"));
                        Log.e("DATA",date);
                    }

                    // use msgData
                } while (cursor.moveToNext());
            } else {
                // empty box, no SMS
            }
    cursor.close();
        }
Cursor Cursor=getContentResolver().query(Uri.parse()content://sms/inbox"),
新字符串[]{“地址”、“日期”、“正文”、“日期>=1535547019783”,空,“日期ASC”);
if(cursor.moveToFirst()){//必须检查结果以防止异常
做{
字符串msgData=“”;

for(int ati=0;ati//只需将时间戳作为光标查询中的第三个参数传递。您将以升序获得过滤后的日期。 请参阅下文

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

            if (cursor.moveToFirst()) { // must check the result to prevent exception
                do {
                    String msgData = "";
                    for(int ati=0;ati<cursor.getColumnCount();ati++)

                    {
                        msgData = "" + cursor.getColumnName(ati) + ":" + cursor.getString(ati);
                       String date= cursor.getString(cursor.getColumnIndex("body"));
                        Log.e("DATA",date);
                    }

                    // use msgData
                } while (cursor.moveToNext());
            } else {
                // empty box, no SMS
            }
    cursor.close();
        }
Cursor Cursor=getContentResolver().query(Uri.parse()content://sms/inbox"),
新字符串[]{“地址”、“日期”、“正文”、“日期>=1535547019783”,空,“日期ASC”);
if(cursor.moveToFirst()){//必须检查结果以防止异常
做{
字符串msgData=“”;

对于(int ati=0;ati)我不再处理该项目,但代码对我来说似乎没问题。我接受了答案,因为这一点。我不再处理该项目,但代码对我来说似乎没问题。我接受了答案,因为这一点。