Android 尝试使用smsmanager发送短信时,应用程序崩溃

Android 尝试使用smsmanager发送短信时,应用程序崩溃,android,Android,我正在构建一个应用程序来发送短信和接收送货报告。我在表单上有一个onclick属性为m1的按钮,当我单击该按钮时,应用程序崩溃。我做错了什么 代码如下: public class m1g extends AppCompatActivity { private BroadcastReceiver sendBroadcastReceiver; private BroadcastReceiver deliveryBroadcastReceiver; String SENT =

我正在构建一个应用程序来发送短信和接收送货报告。我在表单上有一个onclick属性为m1的按钮,当我单击该按钮时,应用程序崩溃。我做错了什么

代码如下:

public class m1g extends AppCompatActivity {
    private BroadcastReceiver sendBroadcastReceiver;
    private BroadcastReceiver deliveryBroadcastReceiver;
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";


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


        TextView rec1 = (TextView) findViewById(R.id.rec1);
        TextView pawn = (TextView) findViewById(R.id.pawn);
        TextView paw = (TextView) findViewById(R.id.paw);
        TextView paa = (TextView) findViewById(R.id.paa);
        TextView ob = (TextView) findViewById(R.id.ob);
        TextView re1 = (TextView) findViewById(R.id.re1);

        Intent i = getIntent();
        Intent ii = getIntent();
        Intent iii = getIntent();
        ob.setText(ii.getStringExtra("tex"));
        rec1.setText(i.getStringExtra("text"));
        re1.setText(iii.getStringExtra("te"));


        pawn.setPaintFlags(pawn.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
        paw.setPaintFlags(paw.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
        paa.setPaintFlags(paa.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);


        sendBroadcastReceiver = new BroadcastReceiver() {

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

        deliveryBroadcastReceiver = new BroadcastReceiver() {
            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;
                }
            }
        };
        registerReceiver(deliveryBroadcastReceiver, new IntentFilter(DELIVERED));
        registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));
    }

        public void m1(){
            String phoneNumber = "08039123061";
            String message = "mad";
            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);
            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
        }
    @Override
    protected void onStop()
    {
        unregisterReceiver(sendBroadcastReceiver);
        unregisterReceiver(deliveryBroadcastReceiver);
        super.onStop();
    }

}

检查您的清单并添加此权限

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

您为
m1()
方法获得了错误的签名。其声明应为:

public void m1(View v)

检查LogCat以查看与崩溃相关的Java堆栈跟踪:现在离我的计算机不太近。你能检查一下代码看是否有问题吗?我添加了它们,但当我点击按钮将smsAm发送到笔记本电脑附近时,应用程序仍然崩溃。我一回家就这么做谢谢你救了我。它不再崩溃了,但发送的消息只是显示了一般性的故障,可能是什么错误啊,这是最糟糕的诊断。很难说原因是什么。您的电话号码格式可能有问题。尝试在开头添加一个
+1
。如果这不起作用,尝试在您所在地区有效的任何其他格式;e、 例如,如果你可以删除任何前导零,或者如果你可以删除“区号”,等等。你可以将你的号码与你的股票消息应用程序发送消息时的格式进行比较。我不知道你到底想错什么。突然,我的手机无法发送消息,我尝试使用本机消息应用发送消息,但两个网络都没有发送消息,我的手机是双sim卡,两个sim卡都出现此错误。我不知道会出什么问题。这听起来要么是网络问题,要么是硬件问题。我们无法真正帮助您解决这些问题,因为这只是我们的猜测,但请确保您得到了一个良好的信号,并且在飞行模式下没有信号。关掉收音机有时只会造成一般性的故障。如果仍然没有,你应该打电话给你的服务提供商,仔细检查你的SMSC(服务中心)设置。它现在可以工作了,原因我不知道。是否可以使用调试警报更改toast消息?