2013-04-14 1 views
1

Я разрабатываю приложение, которое отправляет SMS и получает ответ.Отправка SMS, работающая в 2.2 Froyo, но не в ICS 4.0

Теперь проблема заключается в том, что отправка SMS отлично работает в 2.2 froyo, но не работает в ICS 4.0.

Я делал следующий в моем коде:

  1. добавил разрешение в моем Manifest тп получать и отправлять SMS.

    <uses-permission android:name="android.permission.SEND_SMS"/> 
    <uses-permission android:name="android.permission.RECEIVE_SMS"/> 
    
  2. Вот код, который я использую в кнопке, чтобы отправить СМС.

    public void sendSms(String phoneNumber,String sms) {  
        SmsManager smsManager = SmsManager.getDefault(); 
        smsManager.sendTextMessage(phoneNumber, null ,sms, null, null);    
    } 
    
+1

Вы используете 'android.telephony.SmsManager 'или' android.telephony.gsm.SmsManager'? – Kristopher

+1

+1 для комментария @soulreaver. Кроме того, вы пытались поймать код результата? Возможно, это поможет вам понять, что происходит. – rciovati

+0

Я использую этот импорт android.telephony.SmsManager; – Neo

ответ

1

@rciovati спасибо за предложение я добавил два отложенных намерения с методом SMS теперь каждая вещь работает отлично Вот код

SmsManager smsManager=SmsManager.getDefault(); 
String SENT = "SMS_SENT"; 
String DELIVERED = "SMS_DELIVERED";  
public void sendSms(String phoneNumber,String sms){ 
    PendingIntent pi = PendingIntent.getActivity(this, 0, 
       new Intent(this, myService.class), 0); 
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(SENT), 0); 

      PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(DELIVERED), 0); 

    //---when the SMS has been sent--- 
     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; 
       } 
      } 
     }, new IntentFilter(SENT)); 

     //---when the SMS has been delivered--- 
     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)); 


     smsManager.sendTextMessage(phoneNumber, null, sms, sentPI, deliveredPI); 

    }