2015-05-10 5 views
2

Это мой код для отправки SMS-сообщений в моем Android приложения:Android: Поставленный SMS pendingIntent

private void SendSMS(final String message,final String phoneNumber) 
{ 
    SmsManager sms = SmsManager.getDefault(); 
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); 
    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) 
     { 
      switch (getResultCode()) 
      { 
      case Activity.RESULT_OK: 
       Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
       Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NO_SERVICE: 
       Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NULL_PDU: 
       Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_RADIO_OFF: 
       Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); 
       break; 
      default: 
       break; 
      } 
     } 
    }, new IntentFilter(Constants.SENT)); 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) 
     { 
      switch (getResultCode()) 
      { 
      case Activity.RESULT_OK: 
       Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show(); 
       break; 
      case Activity.RESULT_CANCELED: 
       Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); 
       break;       
      } 
     } 
    }, new IntentFilter(DELIVERED));   
    try{ 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
    }catch(Exception e){ 
     e.printStackTrace(); 
     Toast.makeText(getApplicationContext(), EXCEPTION, Toast.LENGTH_LONG).show(); 
    } 
} 

Все отлично работает, я могу отправить SMS и обе мои широковещательные приемники срабатывают, когда смс отправляется и доставляется. В моей стране каждое подтверждение доставленного сообщения должно быть оплачено, и даже если на моем устройстве я могу отправить много сообщений бесплатно, мой кредит уменьшается. Есть некоторые настройки, которые я пропустил, и что я должен установить, чтобы избежать доставки подтвержденного сообщения, или мне нужно удалить «доставленный» pendingIntent, если на самом деле это проблема? Не могли бы вы дать мне дополнительную информацию? Благодаря

ответ

1

Если вы не хотите, чтобы заказать доставку вы должны пройти null в качестве последнего аргумента

sms.sendTextMessage(phoneNumber, null, message, sentPI, null);

Android документация

if not NULL this PendingIntent is broadcast when the message is delivered to the recipient. The raw pdu of the status report is in the extended data ("pdu").

Так что, если вы установите значение NULL не будет запросите любую доставку. Проверено на моем устройстве.

+0

Спасибо за ваш ответ;) – Ant4res

Смежные вопросы