我正在制作一个简单的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语句。
答案 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发送权限