Отправка SMS работает в 2.2 Froyo, но не в ICS 4.0

Я разрабатываю приложение, которое отправляет SMS и получает ответ.

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

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

  1. добавил разрешение в моем манифесте на получение и отправку SMS.

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

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

person Neo    schedule 14.04.2013    source источник
comment
Вы используете android.telephony.SmsManager или android.telephony.gsm.SmsManager ?   -  person Kristopher    schedule 14.04.2013
comment
+1 за комментарий @soulreaver. Кроме того, вы пытались поймать код результата? Возможно, это поможет вам понять, что происходит.   -  person rciovati    schedule 14.04.2013
comment
я использую этот импорт android.telephony.SmsManager;   -  person Neo    schedule 14.04.2013


Ответы (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);

    }
person Neo    schedule 02.05.2013