7

Android の新機能です。送信ボタンをクリックした後にSMSを送信したい

  1. 最初に、SMS マネージャー API を使用しました。
package com.example.smsproject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;`enter code here`
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Page2Activity extends Activity {

  Button button;
  EditText textPhoneNo;
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      button = (Button) findViewById(R.id.button1);
      textPhoneNo = (EditText) findViewById(R.id.mobilenumber);

      button.setOnClickListener(new OnClickListener() {

          @Override

      public void onClick(View v){

      //String phoneNo = textPhoneNo.getText().toString();
      String phoneNo = "tel:xxxxxxxxxx";
      String messageText = "SMS FROM ANDROID";
      try {
          SmsManager smsManager = SmsManager.getDefault();
          smsManager.sendTextMessage(phoneNo, null, messageText, null, null);
          Toast.makeText(getApplicationContext(), "SMS Sent Successfully!",
                      Toast.LENGTH_LONG).show();
      }catch (Exception e){

          Toast.makeText(getApplicationContext(),
                  "SMS failed, please try again later ! ",
                  Toast.LENGTH_LONG).show();
          e.printStackTrace();

      }

          }

      });

  }

}
  1. android_manifest.xml に send_sms 権限を設定する

エラーはありませんでしたが、SMS が送信されません。あなたが知っているなら答え。

教えてください、読んでくれてありがとう。

4

5 に答える 5

22

@Android Fanaticの回答を完了するには

テキストが長すぎる場合、メッセージは消えません。エンコーディングに応じて最大長を尊重する必要があります。

詳細については、こちらをご覧ください

私はこの方法を好むだろう

SmsManager sms = SmsManager.getDefault();
ArrayList<String> parts = sms.divideMessage(message);

ArrayList<PendingIntent> sendList = new ArrayList<>();
sendList.add(sentPI);

ArrayList<PendingIntent> deliverList = new ArrayList<>();
deliverList.add(deliveredPI);

sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList);
于 2015-01-28T10:32:57.680 に答える
6

次のコードを使用して SMS メッセージを送信します。エラーはトーストに表示されます。

--sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message)
{        
    String SENT = "SMS_SENT";
    String DELIVERED = "SMS_DELIVERED";

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        new Intent(SENT), 0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), 0);

    //---when the SMS has been sent---
    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));

    //---when the SMS has been delivered---
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered", 
                            Toast.LENGTH_SHORT).show();
                    break;                        
            }
        }
    }, new IntentFilter(DELIVERED));        

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
}
于 2013-09-16T12:50:29.890 に答える
1
String incomming = "9876543210";
android.telephony.SmsManager sms=android.telephony.SmsManager.getDefault();
sms.sendTextMessage(incomming, null,"Here Is Sms", null, null);
于 2013-09-16T13:00:45.390 に答える
0
Log.d("SMS ready to send", "----FIRST CALL----");
String number = "111111111111"; //ed1.getText().toString();
String message =  "Test SMS DATA"; //ed2.getText().toString();

Log.d("SMS ready to send", "----SECOND CALL----"+number);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(number, null, message, null, null);

Log.d("SMS ready to send", "----THIRD CALL----");
于 2013-09-16T13:01:45.920 に答える