티스토리 뷰
<uses-permission android:name="android.permission.RECEIVE_SMS" />
// 폰번호를 인식하여 문자를 보내달라고 요청
runOnUiThread(new Runnable() {
@Override
public void run() {
final TelephonyManager tm = (TelephonyManager) getActivity()
.getSystemService(Context.TELEPHONY_SERVICE);
if(tm == null)
return;
// 내 폰번호를 받음
String myNumber = tm.getLine1Number();
if(StringUtils.isEmpty(StringUtils.trim(myNumber)))
return;
// KT일경우 폰번호 변환
if(myNumber.startsWith("+82")) {
myNumber = myNumber.replace("+82", "0");
}
_phone.setText(myNumber);
_useSmsReceiver = true;
sendVerification();
}
});
private void sendVerification() {
// 인증번호란에 바로 입력할수 있도록 포커스를 줌
_code.requestFocus();
// SMS 인증문자를 바로 수신해서 결과를 입력해줌
if(_useSmsReceiver)
registerReceiver();
}
private void registerReceiver() {
unregisterReceiver();
final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SMSReceiver.ACTION);
_receiver = new SMSReceiver();
registerReceiver(_receiver, intentFilter);
}
private void unregisterReceiver() {
if(_receiver != null) {
unregisterReceiver(_receiver);
_receiver = null;
}
}
private class SMSReceiver extends BroadcastReceiver {
private static final String TAG="SMSReceiver";
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
// 문자만 수신받음
if(intent.getAction().equals(ACTION)) {
final Bundle bundle = intent.getExtras();
if(bundle == null)
return;
final Object[] pdusObj = (Object[])bundle.get("pdus");
if(pdusObj == null)
return;
final SmsMessage[] smsMessages = new SmsMessage[pdusObj.length];
for(int i=0; i<smsMessages.length; i++) {
smsMessages[i] = SmsMessage.createFromPdu((byte[])pdusObj[i]);
final String address = smsMessages[i].getOriginatingAddress();
final String message = smsMessages[i].getDisplayMessageBody();
if(address.equals(CS_NUMBER)) {
String adjustMessage = message.replace("[Web발신]", "");
int begin = adjustMessage.indexOf('[');
int end = adjustMessage.indexOf(']');
// 인증번호를 찾았다
final String codeMessage = adjustMessage.substring(begin+1, end);
runOnUiThread(new Runnable() {
@Override
public void run() {
_code.setText(codeMessage);
confirmVerification();
}
});
unregisterReceiver();
}
}
}
}
}
'모바일 프로그래밍' 카테고리의 다른 글
Android 키보드 보이기/숨기기 이벤트 (0) | 2016.04.09 |
---|---|
Android 디바이스 UUID 획득하기 (0) | 2016.04.09 |
Android Volley와 Gson 예제 (0) | 2016.04.08 |
Android 소프트키 메뉴 보유 여부 확인 (0) | 2016.04.08 |
Android 6.0 APK 빌드 안될때 proguard 문제 (0) | 2016.04.08 |
- Total
- Today
- Yesterday