Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓短信历史记录_Android - Fatal编程技术网

Android 安卓短信历史记录

Android 安卓短信历史记录,android,Android,我们目前有一个向用户发送短信的应用程序,它就像安卓手机上的短信网关 我遇到了很多关于如何阅读短消息、短消息线程等的问题,我想知道是否有可能找出哪个线程和传入的短消息属于 我们正在研究如何自动向用户发送带有订单ID的短信,当用户回复时,我们希望找出短信属于哪个线程,并尝试从发起对话的短信中提取订单ID 您可以使用下面的代码找到线程id。但是,如果只查询具有相同地址的所有消息,并且它是出站的(我认为Sms.TYPE==2),可能会更好。通过这种方式,您可以绕过对线程id的需求,一下子就开始寻找订单i

我们目前有一个向用户发送短信的应用程序,它就像安卓手机上的短信网关

我遇到了很多关于如何阅读短消息、短消息线程等的问题,我想知道是否有可能找出哪个线程和传入的短消息属于


我们正在研究如何自动向用户发送带有订单ID的短信,当用户回复时,我们希望找出短信属于哪个线程,并尝试从发起对话的短信中提取订单ID

您可以使用下面的代码找到线程id。但是,如果只查询具有相同地址的所有消息,并且它是出站的(我认为Sms.TYPE==2),可能会更好。通过这种方式,您可以绕过对线程id的需求,一下子就开始寻找订单id

import android.provider.Telephony.Sms;
import android.provider.Telephony.Sms.Intents;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.telephony.SmsMessage;

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intents.SMS_RECEIVED_ACTION)){
            int threadId = 0;
            SmsMessage[] messages = Intents.getMessagesFromIntent(intent);

            String fromAddress = messages[0].getDisplayOriginatingAddress();

            Cursor c = Sms.query(context.getContentResolver(), 
                                 new String[]{Sms.THREAD_ID}, 
                                 Sms.ADDRESS+"="+fromAddress, 
                                 Sms.DATE+" DESC");
            if(c.moveToNext()){
                threadId = c.getInt(0);
            }

            c.close();

            if(threadId!=0){
                //query the Sms again, reading body for your Order ID, etc ...
            }
        }
    }
}