안드로이드 SMS보내기.

   - 1번이 권한 부여가 없으면 프로그램이 이상종료한다. try-catch를 통해 Error원인을 찾고 조치가 필요하다.
   - 3번은 정보는 Internet에 많으니 참고.

 

1) 권한 부여 Permission 중요!( 참조 https://satisfactoryplace.tistory.com)
  static final int SMS_RECEIVE_PERMISSON=1;

  //권한이 부여되어 있는지 확인
  int permissonCheck= ContextCompat.checkSelfPermission(this, Manifest.permission.RECEIVE_SMS);
  if(permissonCheck == PackageManager.PERMISSION_GRANTED){
    Toast.makeText(getApplicationContext(), "SMS 수신권한 있음", Toast.LENGTH_SHORT).show();
  }else{
    Toast.makeText(getApplicationContext(), "SMS 수신권한 없음", Toast.LENGTH_SHORT).show();

  //권한설정 dialog에서 거부를 누르면
  //ActivityCompat.shouldShowRequestPermissionRationale 메소드의 반환값이 true가 된다.
  //단, 사용자가 "Don't ask again"을 체크한 경우
  //거부하더라도 false를 반환하여, 직접 사용자가 권한을 부여하지 않는 이상, 권한을 요청할 수 없게 된다.
  if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.RECEIVE_SMS)){
  //이곳에 권한이 왜 필요한지 설명하는 Toast나 dialog를 띄워준 후, 다시 권한을 요청한다.
    Toast.makeText(getApplicationContext(), "SMS권한이 필요합니다", Toast.LENGTH_SHORT).show();
    ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECEIVE_SMS},       SMS_RECEIVE_PERMISSON);
  }else{
    ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.RECEIVE_SMS}, SMS_RECEIVE_PERMISSON);
  }
}
    

2) 권한 부여 "AndroidMainifest.xml"

"<uses-permission android:name="android.permission.SEND_SMS" />"
"<uses-permission android:name="android.permission.RECEIVE_SMS" />"
"<uses-permission android:name="android.permission.READ_PHONE_STATE" />"


3) SMS 전송
String phoneNo = "010XXXXXXXX";
String sms = "폰에서 자동으로 보내는 메시지 입니다.";
try {
         SmsManager smsManager = SmsManager.getDefault();
         smsManager.sendTextMessage(phoneNo, null, sms, null, null);
         Toast.makeText(getApplicationContext(), "전송 완료!", Toast.LENGTH_LONG).show();
} catch (Exception e) {
         Toast.makeText(getApplicationContext(), "전송 오류!", Toast.LENGTH_LONG).show();
         Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_LONG).show();//오류 원인이 찍힌다.
         e.printStackTrace();
}

 

+ Recent posts