gpt4 book ai didi

Android:检测短信传出,计数不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:27 24 4
gpt4 key购买 nike

我正在尝试制作一个应用程序来计算从手机发出的 SMS 消息的数量。目前我有以下代码:

private void listenForSMS(){
Log.v("SMSTEST", "STARTED LISTENING FOR SMS OUTGOING");
Handler handle = new Handler(){};

SMSObserver myObserver = new SMSObserver(handle);

ContentResolver contentResolver = getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms"),true, myObserver);
}

private class SMSObserver extends ContentObserver{

int count = 0;
String lastMessage = null;

public SMSObserver(Handler handler) {
super(handler);
}

public void onChange(boolean selfChange) {
super.onChange(selfChange);

Log.v("SMSTEST", "HIT ON CHANGE");

Uri uriSMSURI = Uri.parse("content://sms");
Cursor cur = getContentResolver().query(uriSMSURI, null, null,
null, null);
cur.moveToNext();
String protocol = cur.getString(cur.getColumnIndex("protocol"));
if(protocol == null){
count++;
Log.v("SMSTEST", "SMS SENT: count: " + count);
String content = cur.getString(cur.getColumnIndex("body"));

}else{
Log.v("SMSTEST", "SMS RECIEVED");
}
}
}

当我发送一页 SMS 消息时,onChange 被调用了 3 次。当我发送一条两页的 SMS 消息时,onChange 被调用了 4 次。 3页留言,调用5次;等等。

注意:我尝试了 Uri.parse("content://sms") 的其他变体,例如“content://sms/sent”,除了“content://sms"已调用 onChange

如何唯一区分外发短信并准确统计发送的短信数量?

最佳答案

请注意,当您发送短信时,它会保存短信的状态。要解决这个问题,您需要检查记录的类型 int type = c.getInt(c.getColumnIndex("type"));3 次 onchange():
第一个:类型 = 6
第二个:类型 = 4
第三:type = 2(成功)
然后你可以增加你的计数器。
此案例仅适用于 1 位收件人。
如果接收者多于 1 个,需要重新查询“thread_id”和“seen”来获取类型。您可以检查有多少消息发送成功。
祝你好运!

关于Android:检测短信传出,计数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7012703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com