通过Android应用程序发送短信,而无需转移到消息框默认应用程序

时间:2012-03-05 15:21:02

标签: java android

我想问你: 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);
            }
        });

======================更新后======================= =========

Why (SmsManger) word appears like this (with lines)

4 个答案:

答案 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;
    }