在 Android Eclipse 中发送 SMS 消息

Sending SMS Message in Android Eclipse

我正在创建一个简单的应用程序,每次用户打开该应用程序时都会发送短信,但我无法发送预配对消息。这是我的代码:

MainActivity.java:

//The contact number is save in a number.text, so i get it first
    FileInputStream fIn = null;
    InputStreamReader isr = null;
    String number = null;
    try{
        char[] inputBuffer = new char[1024];
        String data = null;
        fIn = openFileInput("number.txt");
        isr = new InputStreamReader(fIn);
        isr.read(inputBuffer);
        data = new String(inputBuffer);
        number = data;
        isr.close();
        fIn.close();

        if(number == null || number.length() < 10){
            //Do nothing
        }else{
            smsBody = "Hello World!";
            try {
                // Get the default instance of the SmsManager
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(number, null, smsBody, null, null);//Im not able to send this.
                Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
                        Toast.LENGTH_LONG).show();
            } catch (Exception ex) {
                Toast.makeText(getApplicationContext(),"Sending message failed!",
                        Toast.LENGTH_LONG).show();
                ex.printStackTrace();
            }

        }

    }catch(IOException e){
        //Do nothing
    }

我已经在清单文件中设置了权限。这是我的权限代码。

<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
//Im adding some features so i need this
<uses-permission android:name="android.permission.RECEIVE_MMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

toast 消息显示消息已发送,但我无法接收。 但是当我将 MainActivity.java 更改为这样时:

            //The contact number is save in a number.text, so i get it first
            FileInputStream fIn = null;
            InputStreamReader isr = null;
            String number = null;
            try{
                char[] inputBuffer = new char[1024];
                String data = null;
                fIn = openFileInput("number.txt");
                isr = new InputStreamReader(fIn);
                isr.read(inputBuffer);
                data = new String(inputBuffer);
                number = data;
                isr.close();
                fIn.close();

                if(number == null || number.length() < 10){
                    //Do nothing
                }else{
                    smsBody = "Hello World!";
                    try {
                        // Get the default instance of the SmsManager
                        SmsManager smsManager = SmsManager.getDefault();
                        smsManager.sendTextMessage("48612156715", null, smsBody, null, null);//I change this from smsManager.sendTextMessage(number, null, smsBody, null, null); where the 48612115 is my example number.
                        Toast.makeText(getApplicationContext(), "Message Sent to " + number + ".",
                                Toast.LENGTH_LONG).show();
                    } catch (Exception ex) {
                        Toast.makeText(getApplicationContext(),"Sending message failed!",
                                Toast.LENGTH_LONG).show();
                        ex.printStackTrace();
                    }

                }

            }catch(IOException e){
                //Do nothing
            }

我现在可以收到消息了,我需要先获取 number.text 文件的值并将其放入变量中,然后将其用作数字,但它不起作用。

这可以是:

您的硬编码号码 48612115 有 8 位数字,您正在检查少于 10 位并且在您的 if 块中什么都不做。

if(number == null || number.length() < 10)
{
   // do nothing
}
else
{
   // send message
}

您应该检查语法是否正确。

希望对您有所帮助!

好的,感谢大家,我找到了解决我自己问题的方法。 :-) 这是代码:

String phoneNumber = "";
String smsBody = "Example Message";
        try {
            InputStream instream = new FileInputStream(
                    "data/data/com.example.test/files/number.txt");
            if (instream != null) {
                InputStreamReader inputreader = new InputStreamReader(instream);
                BufferedReader buffreader = new BufferedReader(inputreader);
                String line;
                if ((line = buffreader.readLine()) != null)
                    phoneNumber = line;

                try {
                    // Get the default instance of the SmsManager
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNumber, null, smsBody, null, null);

                    Toast.makeText(getApplicationContext(), "Message Sent to " + phoneNumber + ".",
                            Toast.LENGTH_LONG).show();
                } catch (Exception ex) {
                    Toast.makeText(getApplicationContext(),"Sending Message failed!",
                            Toast.LENGTH_LONG).show();
                    ex.printStackTrace();
                }

                instream.close();
            }
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(),e,
                            Toast.LENGTH_LONG).show();
        }

谢谢大家!