我正在编写发送短信的代码,但发送短信失败了。此外,有时我的代码有一个交叉线和此警告:“不推荐使用SmsManager类型的方法sendTextMessage(String,String,String,PendingIntent,PendingIntent)”
class MainActivity extends Activity implements OnClickListener{
Button bSend;
EditText Mobile, msg;
String mob, s_msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
bSend.setOnClickListener(this);
}
private void init() {
// TODO Auto-generated method stub
bSend = (Button) findViewById(R.id.bSendSMS);
Mobile = (EditText)findViewById(R.id.etMobile);
mob = Mobile.getText().toString();
msg = (EditText)findViewById(R.id.etMsg);
s_msg = msg.getText().toString();
}
@Override
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;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(mob, null, s_msg, null, null);
Toast.makeText(getApplicationContext(), "SMS Sent!",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again later!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
您收到了弃用邮件,因为您导入了错误的SmsManager类。
移除android.telephony.gsm.SmsManager
并导入android.telephony.SmsManager
此外,请确保您已获得发送消息的权限
<uses-permission android:name="android.permission.SEND_SMS" />
答案 1 :(得分:0)
smsManager.sendTextMessage(mob, null, s_msg, null, null);
最后的两个空值是你可以放置PendingIntent
的地方。第一个用于在发送文本消息后接收消息,另一个用于接收消息。您可以添加此代码以检查send:
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(SENT), 0);
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));
smsManager.sendTextMessage(mob, null, s_msg, sentPI, null);
希望能为您提供有关失败原因的更多信息。