1

私はAndroidアプリケーションに取り組んでいます。私のアプリでは、SMS を聞いて会話を表示する必要があるため、次のコードを使用します。

 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");
    }

上記のコードは正常に機能しており、SMS の詳細とコンテンツを取得しています。そのため、SMS コンテンツ プロバイダーからの会話を確認する必要があります。次のコードを使用しました。

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();
}

ある番号から最初の SMS を受信したとき。 getConversation() メソッドはその番号をリストしていません。たとえば、会話がない場合、yyyy から最初の SMS を取得しました。

System.out.println(c.getCount());

ゼロを返します。

番号 xxxx からの会話がある場合のように、yyyy から最初の SMS を取得します。c.getcount() の print ステートメントは 1 つを返します。つまり、xxxx 情報のみを意味します。

yyyy から 2 番目の SMS を受信した場合、問題なく動作します。xxxx と yyyy の両方の会話の詳細を取得します

4

1 に答える 1

0

おそらく、getConversation() メソッドを呼び出したときに、メッセージが db に書き込まれません。content://mms-sms/ は公式の API ではないため、動作がおかしい場合があります。他の場所で getConversation を呼び出してみてください

于 2012-08-21T10:11:43.260 に答える