2018年6月23日 星期六

SmsManager &發送簡訊

int MY_PERMISSION_REQUEST_SEND_SMS = 1;
String SEENT="SMS_SENT";
String DELIVERED="SMS_DELIVERED";
PendingIntent sentPI,deliveredPI;
BroadcastReceiver smsSentReceiver,smsDeliveredReceiver;
final int REQUEST_READ_PHONE_STATE = 1 ;


protected void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
                   setContentView(R.layout.activity_main);      
                   sentPI= PendingIntent.getBroadcast(this,0,new Intent(SEENT),0);
                   deliveredPI= PendingIntent.getBroadcast(this,0,new Intent(DELIVERED),0);
}

    @Override
    protected void onResume() { 
  smsSentReceiver =new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                switch (getResultCode()){
                    case Activity.RESULT_OK:
                        Log.d("Debug","  SMS sent");
                        Toast.makeText(MainActivity.this, "短信发送成功", Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Log.d("Debug","  SMS   FAILURE");
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Log.d("Debug","  NO  _ SERVICE ");
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Log.d("Debug"," NULL  _  PDU");
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Log.d("Debug","  RADIO  _  OFF");
                        break;
                }

            }
        }; 
  smsDeliveredReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                switch (getResultCode()){
                    case Activity.RESULT_OK:
                        //(供应商已经发送成功,但是对方没有收到)。
                        Toast.makeText(MainActivity.this, "短信是否被对方收到的状态信息", Toast.LENGTH_SHORT).show();

                        Log.d("Debug","  SMS  Delivere");
                        break;
                    case Activity.RESULT_CANCELED:
                        Log.d("Debug","  SMS  not   Delivere");
                        break;
                }

            }
        };

        registerReceiver(smsSentReceiver,new IntentFilter(SEENT));
        registerReceiver(smsDeliveredReceiver,new IntentFilter(DELIVERED)); 

}

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(smsDeliveredReceiver);
        unregisterReceiver(smsSentReceiver);
    }



  public void onSend_(View view){

if(ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED)
        {
           
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS} , MY_PERMISSION_REQUEST_SEND_SMS);
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_PHONE_STATE}, MY_PERMISSION_REQUEST_SEND_SMS);

        }else{
            final SmsManager sms=SmsManager.getDefault();
            //第一個參數電話號碼,第三個參數簡訊內容 
            sms.sendTextMessage(number",null,message,sentPI,deliveredPI);
        }
}




沒有留言:

張貼留言