gpt4 book ai didi

android - SmsManager 不断重试在 HTC Desire 上发送短信

转载 作者:太空狗 更新时间:2023-10-29 13:39:28 25 4
gpt4 key购买 nike

在我的应用中我需要发送短信,所以我使用下面的代码

final String SMS_REQUEST_OK = "SMS_REQUEST_OK";
String m_sms_message = String.format("sample text");
String m_dest_number = "some number";

Intent SMSInfo = new Intent(SMS_REQUEST_OK);
SMSInfo.putExtra("msg", m_sms_message);
SMSInfo.putExtra("num", m_dest_number );
PendingIntent sentPI = PendingIntent.getBroadcast(m_context, 0,
SMSInfo, PendingIntent.FLAG_CANCEL_CURRENT);

m_context.registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()){
case Activity.RESULT_OK:
Toast.makeText(m_context, String.format(
m_context.getResources().getString(R.string.sms_success),
arg1.getExtras().getString("msg"),
arg1.getExtras().getString("num")),
Toast.LENGTH_LONG).show();
break;
default:
Toast.makeText(m_context, String.format(
m_context.getResources().getString(R.string.sms_error),
arg1.getExtras().getString("msg"),
arg1.getExtras().getString("num")),
Toast.LENGTH_LONG).show();
break;
}
}
}, new IntentFilter(SMS_REQUEST_OK));

SmsManager.getDefault().sendTextMessage(
m_dest_number,
null,
m_sms_message,
sentPI,
null);

我希望它尝试发送一次 SMS,然后显示带有此操作结果的 Toast 消息。如果 SMS 发送成功,它工作正常,但是如果它不成功,它会不断重试发送它,判断大量的 Toast 消息(它发生在 HTC Desire (S) 上,在三星上测试它没有得到这个行为 - Toast with error显示一次)。那么 - SmsManager 应该如何表现以及如何避免它(以便它只尝试发送一次 SMS)?

编辑 我忘了提 - 如果 getResultCode() 返回 133404 就会发生这种情况,还没有对其他错误进行测试

edit2 根据this , 133404 是 htc 特有的错误,这意味着暂时失败,设备将自动重试,直到最终收到正确的结果代码并发送广播。但是,在合理时间内没有收到 SmsManager 记录的广播。所以问题仍然存在 - 有没有办法阻止这种重试尝试?

最佳答案

只是总结一下我发现的内容:根据 android 文档,sendTextMessage() 的预期行为只是一次尝试发送消息,然后广播结果。然而,一些 HTC 设备不断重试发送消息,每次尝试后广播“临时错误”代码。因此,如果应用程序仅检查结果代码是否“成功”(Android 市场上的许多短信应用程序似乎都这样做),它会将消息标记为未发送并停止收听它(这符合 sendTextMessage() 函数的预期行为),这可能会导致将消息标记为未发送,而实际上它在稍后的尝试中已成功发送。

更糟糕的是,记录的代码可能永远不会发送 - 因此,如果您收到 HTC“临时代码”之一(133404 或 133179,但可能还有更多)消息状态不确定 - 它可能会在一段时间后发送,或者可能永远不会发送。因此,在我看来,您只能通过继续收听广播直到获得正确的结果代码(可能永远不会发送)或判断传送广播来确定消息状态。

关于android - SmsManager 不断重试在 HTC Desire 上发送短信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7526179/

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