无法发送短信

问题描述:

我是一名新的Android开发人员。 我写下面的代码发送短信。无法发送短信

private void sendSMS(String phoneNumber) 
    {   
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 
    final AlertDialog dialog = new AlertDialog.Builder(this).create(); 

    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: 
       dialog.setMessage("SMS is Successfully Sent for Contact Request "); 
       dialog.setTitle("ALERT:SMS Sent"); 

       dialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", 
       new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
        return; 

       } 
       }); 
       dialog.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; 
      } 
     return; 
    } 
    }, new IntentFilter(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));   

    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, messageToSend, sentPI, deliveredPI);  
} 

该代码在Emulator中成功运行,但在手机中无法运行。 它会显示以下错误

  case SmsManager.RESULT_ERROR_NO_SERVICE: 
      Toast.makeText(getBaseContext(), "No service",); 

我已经给出了所需的权限,并在手机SIM卡有(有足够的余额)为好。

我只是stucked请帮助。

+0

,一从'gsm'软件包已弃用?你能告诉我们你正在使用的权限吗?你的手机有覆盖吗? – tidbeck 2012-03-16 07:25:57

+0

是的我正在使用smsmanager的电话包。 – kamal 2012-03-25 08:58:18

+0

尝试在另一个android手机上运行此应用程序。代码对我来说看起来非常好。 – 2012-03-16 05:07:18

使用这段代码来发送消息

private void sendSMS(String phoneNumber, String message) 
{   
    Log.d("phoneNumber",phoneNumber); 
    Log.d("MEssage",message); 
    PendingIntent pi = PendingIntent.getActivity(CONTEXT, 0, 
     new Intent(CONTEXT,Object.class), 0);     
    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, pi, null);   
} 
+0

不工作。再次获取服务。 – berserk 2015-01-14 19:34:40

尝试这个代码 -

//---sends an SMS message to another device--- 
private void sendSMS(String phoneNumber, String message) 
{   
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    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 sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);   
} 

而且,还您是否使用了正确的`SmsManager`参考this tutorial