【问题标题】:Does android SmsManager show message is sent for numbers that are switched off?android SmsManager 是否会为已关闭的号码发送消息?
【发布时间】:2014-07-31 16:32:09
【问题描述】:

我想了解import android.telephony.SmsManager; 如何知道短信已成功发送。

我正在使用学习指南中的这段代码

 protected void sendSMSMessage() {
      Log.i("Send SMS", "");

      String phoneNo = txtphoneNo.getText().toString();
      String message = txtMessage.getText().toString();

      try {
         SmsManager smsManager = SmsManager.getDefault();
         smsManager.sendTextMessage(phoneNo, null, message, null, null);
         Toast.makeText(getApplicationContext(), "SMS sent.",
         Toast.LENGTH_LONG).show();
      } catch (Exception e) {
         Toast.makeText(getApplicationContext(),
         "SMS failed, please try again.",
         Toast.LENGTH_LONG).show();
         e.printStackTrace();
      }
   }

通常,我知道当我向已关闭的号码发送短信时,我没有收到确认消息已收到的送达报告。即使号码是,import android.telephony.SmsManager; 是否显示消息已发送关了?

【问题讨论】:

  • 关闭号码是指您的手机可能没电了,当有人试图给您打电话时,您无法联系到您。SIM 卡需要您看到一些费用。

标签: java android sms smsmanager


【解决方案1】:

试试这个:

        package com.splash.smsManager;

        import android.app.Activity;
        import android.app.PendingIntent;
        import android.content.BroadcastReceiver;
        import android.content.Context;
        import android.content.Intent;
        import android.content.IntentFilter;
        import android.os.Bundle;
        import android.telephony.SmsManager;
        import android.telephony.SmsMessage;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.widget.Button;
        import android.widget.Toast;

        public class SendingSmsWithReport extends Activity {
            String sendingSmsStatus = "SEND";
            String deliverySmsStatus = "DELIVERED";
            PendingIntent send, delivered;
            BroadcastReceiver sendReceiver, deliveredRecevier;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main_activity);
                send = PendingIntent.getBroadcast(this, 0,
                        new Intent(sendingSmsStatus), 0);
                delivered = PendingIntent.getBroadcast(this, 0, new Intent(
                        deliverySmsStatus), 0);
                Button sendSmsButton = (Button) findViewById(R.id.button1);
                sendSmsButton.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        SmsManager sms  = SmsManager.getDefault();
                        sms.sendTextMessage("5556", null, "Hello Welcome to Android", send, delivered);
                        //5556 is Emulator Number.
                    }
                });
            }

            @Override
            protected void onPause() {
                // TODO Auto-generated method stub
                super.onPause();
                unregisterReceiver(sendReceiver);
                unregisterReceiver(deliveredRecevier);
            }

            @Override
            protected void onResume() {
                // TODO Auto-generated method stub
                super.onResume();
                sendReceiver = new BroadcastReceiver() {

                    @Override
                    public void onReceive(Context context, Intent intent) {
                        switch(getResultCode())
                        {
                        case Activity.RESULT_OK:
                            Toast.makeText(getBaseContext(), "Sms Sent Successfully", Toast.LENGTH_LONG).show();
                            break;
                        case SmsManager.RESULT_ERROR_NO_SERVICE:
                            Toast.makeText(getBaseContext(), "No Serice Found in your Device", Toast.LENGTH_LONG).show();
                            break;
                        }

                    }
                };
                deliveredRecevier = new BroadcastReceiver() {

                    @Override
                    public void onReceive(Context context, Intent intent) {
                        switch(getResultCode())
                        {
                        case Activity.RESULT_OK:
                            Toast.makeText(getBaseContext(), "Sms Successfully Delivered", Toast.LENGTH_LONG).show();
                            break;
                        case Activity.RESULT_CANCELED:
                            Toast.makeText(getBaseContext(), "Sms not Delivered", Toast.LENGTH_LONG).show();
                            break;
                        }

                    }
                };
                registerReceiver(sendReceiver, new IntentFilter(sendingSmsStatus));
                registerReceiver(deliveredRecevier, new IntentFilter(deliverySmsStatus));
            }


        }

【讨论】:

  • 你有其他可以分享的文件或者你编译的apk吗?我已经编译了我的,它不好dropbox.com/s/ch72znu7y4xrtw2/sendsms-release.apk
  • 我编译成功了,但是一直崩溃。
  • 没有 DropBox 帐户!在设备或模拟器中测试? .如果您在模拟器中进行测试意味着发送 LogCat 中可用的异常。因为应用程序崩溃意味着可能存在异常或错误。
  • 我在我的模拟器中安装了你的 apk 文件工作正常。它显示一个 Toast 消息,如“SMS 已发送!”
  • 我在我的模拟器中安装了你的 apk 文件工作正常。它显示一个 Toast 消息,如“SMS 已发送!”您还可以在电话操作下手动检查 DDMS/Emulator-Controll 在传入号码编辑框中提供一些号码并在消息中提供短信文本,然后单击发送按钮,短信将在通知托盘中可用...快乐编码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2012-04-11
  • 1970-01-01
  • 2015-07-08
  • 2013-07-11
  • 1970-01-01
相关资源
最近更新 更多