2013-10-01 5 views
1

Я пишу код для отправки SMS, но отправка SMS не выполняется. Кроме того, иногда мой код имеет пересеченную линию и это предупреждение: «Метод sendTextMessage (String, String, String, PendingIntent, PendingIntent) от типа SMSManager осуждается»Ошибка при отправке СМС

class MainActivity extends Activity implements OnClickListener{ 

    Button bSend; 
    EditText Mobile, msg; 
    String mob, s_msg; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     init(); 
     bSend.setOnClickListener(this); 
    } 

    private void init() { 
     // TODO Auto-generated method stub 
     bSend = (Button) findViewById(R.id.bSendSMS); 
     Mobile = (EditText)findViewById(R.id.etMobile); 
     mob = Mobile.getText().toString(); 
     msg = (EditText)findViewById(R.id.etMsg); 
     s_msg = msg.getText().toString(); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     try { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(mob, null, s_msg, null, null); 
      Toast.makeText(getApplicationContext(), "SMS Sent!", 
        Toast.LENGTH_LONG).show(); 
     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), 
        "SMS faild, please try again later!", 
        Toast.LENGTH_LONG).show(); 
      e.printStackTrace(); 
     } 
    } 

} 

ответ

0

Вы получаете сообщение устаревания, потому что вы импортировали неправильный класс SmsManager. Удалить android.telephony.gsm.SmsManager и импортировать android.telephony.SmsManager

Кроме того, убедитесь, что вы дали разрешение на отправку сообщений

<uses-permission android:name="android.permission.SEND_SMS" /> 
0
smsManager.sendTextMessage(mob, null, s_msg, null, null); 

Два обнуляет в конце места, куда вы можете положить PendingIntent. Первый - для приема сообщений после отправки текстового сообщения, а другой - при его получении. Вы можете добавить этот код, чтобы проверить коды ошибок, возвращаемые посыла:

PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
     new Intent(SENT), 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; 
      } 
     } 
    }, new IntentFilter(SENT)); 

    smsManager.sendTextMessage(mob, null, s_msg, sentPI, null); 

что мы надеемся, даст вам больше информации о том, почему это не удается.

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