【问题标题】:SMS sending working in 2.2 Froyo but not in ICS 4.0SMS 发送在 2.2 Froyo 中有效,但在 ICS 4.0 中无效
【发布时间】:2013-04-14 10:44:30
【问题描述】:

我正在开发一个发送 SMS 并接收一些响应的应用程序。

现在的问题是 SMS 发送在 2.2 froyo 中可以正常工作,但在 ICS 4.0 中无法正常工作。

我在我的代码中做了以下操作:

  1. 在我的清单中添加了接收和发送短信的权限。

    <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);            
    }
    

【问题讨论】:

  • 你使用的是android.telephony.SmsManager还是android.telephony.gsm.SmsManager
  • +1 @soulreaver 评论。另外,您是否尝试过捕获结果代码?也许可以帮助您了解正在发生的事情。
  • 我正在使用这个 import android.telephony.SmsManager;

标签: android sms android-4.0-ice-cream-sandwich


【解决方案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);

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2012-03-14
    • 2014-07-10
    • 2021-09-22
    相关资源
    最近更新 更多