Java 通过Android应用程序发送短信而不移动到消息框默认应用程序
我想问你: 1-如何通过我的应用程序发送SMS而不将用户移动到消息框 我只想允许用户插入文本,然后他/她点击发送按钮 之后,直接将短信发送到我在代码中写的特定号码 我使用了如下所示的代码,它运行良好,但它将我移动到了消息框:( 有什么建议吗Java 通过Android应用程序发送短信而不移动到消息框默认应用程序,java,android,Java,Android,我想问你: 1-如何通过我的应用程序发送SMS而不将用户移动到消息框 我只想允许用户插入文本,然后他/她点击发送按钮 之后,直接将短信发送到我在代码中写的特定号码 我使用了如下所示的代码,它运行良好,但它将我移动到了消息框:( 有什么建议吗 MyButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-
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);
}
});
==================================更新后================================
您必须使用提供的意图。这允许用户选择使用哪个应用发送短信。这是Android的设计方式。它让用户选择应用如何发送短信 如果您希望在用户不使用其选择的应用程序的情况下发送SMS,则您需要使用商业提供商(如esendex)提供的SMS API,并向他们支付费用以便为您发送SMS
//---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);
}
花一段时间了解所有参数对您的作用
此外,这段代码片段来自于以下教程:您正在使用一个Intent对象(新Intent(Intent.ACTION\u VIEW…),它调用内置SMS应用程序来帮助您发送SMS消息。因此,您将被重定向到消息框
要完成发送消息的过程而不直接发送到消息框,您需要使用
pendingent
。请看这本很棒的SMS教程,它很可能会解决您的问题。我找到了完美的解决方案:
// 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;
}
谢谢,但你能解释一下你的第二句话吗?如果你的意思是我们必须向网络提供商付费,我们确实和他们谈过,我们将使用唯一号码作为接收者号码(我们的服务器),正因为如此,我们应该隐藏向用户发送短信的步骤,并将其显示为Whatsapp中的聊天?希望我的问题现在更清楚…使用
sendTextMessage(电话号码、null、message、sentPI、deliveredPI)
SMSManager的方法@imrankhan非常感谢,你的意思是这是一个内置函数吗?如果是,sendPI和deliverdPI的意思是什么?你是指通过电话号码的接收者号码吗???非常感谢…是的,这是SMSManager中的内置函数:sentPI是一个用于接收已发送的交付报告、deliverdPI和用于接收送达报告的PendingEvent,我们要向其发送短信的电话号码和null是服务中心号码。有关更多帮助,请参阅@imrankhan。您知道此代码有什么问题吗?您正在使用android.telephony.gsm.smsmsmanager
,该代码已被弃用。请参阅android.telephony.SmsManager
。请检查是否有问题即时战略