我的应用程序发送 SMS 消息,我想知道如果没有可用的移动网络(信号接收)并且无法发送 SMS,是否有异常要捕获?
问问题
284 次
3 回答
2
您可以注册此处理程序来处理结果:
registerReceiver(new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
int resultCode = getResultCode();
switch (resultCode)
{
case Activity.RESULT_OK:
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
break;
}
}
}, new IntentFilter("SMS_SENT"));
然后,如文档中所示,您可以按如下方式发送文本:
sendTextMessage (number, null, "text", PendingIntent.getBroadcast(this, 0,
new Intent("SMS_SENT_ACTION"), 0), null);
于 2013-05-27T18:38:08.727 回答
1
您应该明白,调用SmsManager.sendTextMessage()
不会立即同步发送消息,因此不会因发送失败而引发异常。
但是,当您打电话时,sendTextMessage()
您可以提供一个PendingIntent
将在发送消息成功/失败时触发的。这是该参数文档的相关部分:
如果不为 null,则在发送相应消息部分时广播的 PendingIntents 的 ArrayList(每个消息部分一个)。结果代码将是 Activity.RESULT_OK 表示成功,或以下错误之一:
RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU
对于 RESULT_ERROR_GENERIC_FAILURE,每个 sentIntent 可能包含额外的“errorCode”,其中包含无线电技术特定值,通常仅对故障排除有用。
于 2013-05-27T18:35:55.047 回答
0
AFAIK 也不例外,但您可以使用ConnectivityManger获取此类信息。
您也需要ACCESS_NETWORK_STATE
获得许可。
于 2013-05-27T18:31:57.610 回答