Вы просто сравниваете код результата с неверной константой. SmsManager.sendMultipartTextMessage
В Javadoc четко указаны возможные значения, возвращаемые getResultCode()
в трансляции sentIntents
:
The result code will be Activity.RESULT_OK for success, or one of these errors:
RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU
По моему мнению, STATUS_ON_ICC_xxx
константы были добавлены в публичный API по ошибке, поскольку они используются только скрытыми методами класса SmsManager: copyMessageToIcc
, deleteMessageFromIcc
и т. Д.
UPDATE
Однако это не объясняет, почему вы получаете 0
от getResultCode()
. Поскольку ни одна из этих констант не равна нулю (Activity.RESULT_CANCEL = 0
, но об этом нет никакого упоминания в SmsManager
javadoc). Быстрый поиск через Android Источники также не дают никакой подсказки, откуда взялась 0
.
Возможно, что другое приложение перехватит широковещательную рассылку sentIntent
и вызовет setResultCode
явно. Однако до сих пор я был уверен, что в Android невозможно предотвратить отправку SMS на уровне приложения.