Android 安卓短信内容提供商首次未提供价值

Android 安卓短信内容提供商首次未提供价值,android,android-contentprovider,Android,Android Contentprovider,我正在开发一个Android应用程序。在我的应用程序中,我必须收听短信并显示对话内容 public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] msgs = new SmsMessage[pdus.length];

我正在开发一个Android应用程序。在我的应用程序中,我必须收听短信并显示对话内容

 public void onReceive(Context context, Intent intent) {
     Bundle bundle = intent.getExtras();
     Object[] pdus = (Object[]) bundle.get("pdus");
     SmsMessage[] msgs = new SmsMessage[pdus.length];
     for (int i = 0; i < msgs.length; i++) {
        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
        sender = msgs[i].getOriginatingAddress();
        message = msgs[i].getMessageBody().toString();
        smsSummary.append(getContactDisplayNameByNumber(sender, context));
        smsSummary.append(": ").append(message).append("\n");
    }
getConversation(sender,context);

public void getConversation(Context context){
    Uri uri = Uri.parse("content://mms-sms/conversations/");
    Cursor c= context.getContentResolver().query(uri, null, null ,null,"DATE desc");
//        startManagingCursor(c);
    System.out.println("c.getCount()===="+c.getCount());
    if(c.moveToFirst()){

            for(int i=0;i<c.getCount();i++){
             if(sender.equals(c.getString(c.getColumnIndexOrThrow("address")).toString())) {

                        body_new=c.getString(c.getColumnIndexOrThrow("body")).toString();
                        date_new=convertToDate(c.getString(c.getColumnIndexOrThrow("date")));
                        num_new=c.getString(c.getColumnIndexOrThrow("address")).toString();
                        tid=c.getInt(c.getColumnIndex("thread_id"));

                    }

                     c.moveToNext();
             }
    }
    c.close();
}
将返回零

例如,如果我有一个来自数字xxxx的转换,那么我从yyyy收到第一条短信。c.getcount()的print语句返回一条。这意味着只有xxxx信息


如果我从yyyy收到第二条短信,那么它可以正常工作。我将获得xxxx和yyyy的对话详细信息

当您调用getConversation()方法时,消息可能没有写入db。content://mms-sms/ 它不是官方API,它的行为可能很奇怪。尝试在其他地方调用getConversation

您在哪里调用getConversation()方法?调用getConversation()方法时,消息可能没有写入数据库。content://mms-sms/ 它不是官方API,它的行为可能很奇怪。试着在其他地方给getConversation打电话。@sinisha..谢谢你..让我试试。@sinisha.你是对的..请在回答部分更正。然后只有我可以接受。
System.out.println(c.getCount());