从Android应用程序发送SMS消息

时间:2014-07-22 11:28:01

标签: android sms sendmessage

我正在制作一个简单的Android应用程序来向移动网络发送消息。我使用以下代码,但是当我输入电话号码和短信并单击发送按钮时,它不会发送消息并说消息发送失败。

我的主要活动" Main.java"是这个..

import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.telephony.SmsManager;
import android.widget.Toast;

public class Main extends ActionBarActivity {

    Button Btn;
    EditText textphoneNo;
    EditText Message;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

        Btn = (Button) findViewById(R.id.SendSMS);
        textphoneNo = (EditText) findViewById(R.id.TextPhoneNo);
        Message = (EditText) findViewById(R.id.TextSMS);


        Btn.setOnClickListener(new View.OnClickListener() {
           public void onClick(View view) {
              sendSMSMessage();
           }

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

            String phoneNo = textphoneNo.getText().toString();
            String message = Message.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 Sending Failed.",
                Toast.LENGTH_LONG).show();
                e.printStackTrace();
             }
          }
          @SuppressWarnings("unused")
        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;
        }
    });

    }
  }

当点击发送按钮时,控件转到catch语句并且没有发送消息,请告诉我这里的问题是什么,不让控件转到try语句。

4 个答案:

答案 0 :(得分:2)

您必须在AndroidManifest.xml中添加此权限

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

你呢?

答案 1 :(得分:0)

使用Log.i("phonenumber",textphoneNo.getText().toString())查看phoneNumber值。我认为它的价值是null

答案 2 :(得分:0)

好吧,如果你正在捕获异常,你可以分享你得到的堆栈跟踪吗?如果你不知道它是什么,很难解决问题。

问题很可能是Jose提到的问题,即您尚未声明发送SMS消息的权限,并因此而被抛出异常。

答案 3 :(得分:0)

确保您在Manifest.xml文件中添加了sms发送权限