我想问你: 1 - 如何在不将用户移动到消息框的情况下通过我的应用程序发送SMS 我只是想让用户插入文本然后他/她点击发送按钮 之后直接将文本消息发送到我在代码中写的特定号码?
我使用此代码如下所示,它运行良好,但它将我移动到消息框:( 任何建议?
MyButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
String str= MyEditText.getText().toString();
// For SMS
Uri smsUri = Uri.parse("I wrote my number here");
Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("sms_body", "Besm Allah");
intent.setType("vnd.android-dir/mms-sms"); startActivity(intent);
}
});
======================更新后======================= =========
答案 0 :(得分:1)
您正在使用Intent对象(新的Intent(Intent.ACTION_VIEW ...),它会调用内置的SMS应用程序来帮助您发送短信。因此,您将被重定向到消息框。
要在不指向消息框的情况下发送消息流程,您需要使用PendingIntent
。看看这个很棒的短信教程,很可能解决你的问题。 http://mobiforge.com/developing/story/sms-messaging-android
答案 1 :(得分:0)
您必须使用提供的意图。这允许用户选择用于发送SMS的应用程序。这就是Android的设计方式。它让用户可以选择应用程序如何发送短信。
如果您想在没有用户使用所选应用的情况下发送短信,那么您需要使用商业提供商提供的SMS API(例如esendex),并付费给他们发送短信。
答案 2 :(得分:0)
//---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message)
{
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMS.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
}
拿一个close look at SmsManager来了解所有参数将为您做些什么。
以下是此代码段的教程:http://mobiforge.com/developing/story/sms-messaging-android
答案 3 :(得分:0)
我找到了完美的索尔。 :
// Inside OnCreate()
Send.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
HelperWordStr= HelperWords.getText().toString();
// For SMS
if (!b) {
try {
sendSMS("Receiver Number", HelperWordStr);
Toast.makeText(ChattingPage.this, "SMS Sent", Toast.LENGTH_LONG)
.show();
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(ChattingPage.this, e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
});
// Outside
public void sendSMS(String number, String msg) throws Exception {
if (!b) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, msg, null, null);
}
b = true;
}