LJY
136
2019-01-16 17:24:14
2
636

안드로이드 스튜디오 sms 수신이 되질 않네요..


AndroidManifest.xml


(...)

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

(...)

    <receiver
          android:name=".MyReceiver"
          android:enabled="true"
          android:exported="true">
          <intent-filter>
              <action android:name="android.provider.Telephony.SMS_RECEIVED" />
          </intent-filter>
     </receiver>

(...)



MyReceiver.java



(import 생략)

public class MyReceiver extends BroadcastReceiver {
    private static final String TAG = "SMSReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "onReceive() 호출");

        Bundle bundle = intent.getExtras();
        SmsMessage[] messages = parseSmsMessage(bundle);

        if(messages.length > 0) {
            String sender = messages[0].getOriginatingAddress();
            Log.d(TAG, "sender : " + sender);

            String contents = messages[0].getMessageBody().toString();
            Log.d(TAG, "contents : " + contents);

            Date receivedDate = new Date(messages[0].getTimestampMillis());
            Log.d(TAG, "date : " + receivedDate);
        }
    }

    private SmsMessage[] parseSmsMessage(Bundle bundle) {
        Object[] objects = (Object[]) bundle.get("pdus");
        SmsMessage[] messages = new SmsMessage[objects.length];

        for (int i = 0; i < objects.length; i++) {
            messages[i] = SmsMessage.createFromPdu((byte[])objects[i]);
        }
        return  messages;
    }
}


이렇게 진행하였는데 Logcat 에 sms 기록이 하나도 기록되지 않네요.

분명 안드로이드 스튜디오 관련 책을 참고하고, 이외 다른 사이트 내용도 참고를 하였는데 전혀 수신이 되질 않습니다.. 무엇이 문제일까요? 봐주시면 감사하겠습니다.

0
  • 답변 2

  • 간고등어코치
    405
    2019-01-16 17:44:51

    sms 는 런타임 퍼미션일텐데 앱을 실행하고 동적으로 권한을 확인받아야합니다.


    런타임 퍼미션에 대해 검색해보세요.


    그것도 아니라면 google policy sms and call log 알아보세요 이건 저도 정확히 잘 몰라서 ^^;

  • LJY
    136
    2019-01-16 18:05:42

    @간고등어코치 

    헉 간고등어코치님 말씀 들어보고 SMS 허용을 확인해보았더니, 권한이 주어지지 않고 있었네요; 버전을 낮춰서 당연히 되었다고 생각했는데.. 뒤늦게 무조건 26버전부터 쓸 수 있단 소식을 접했습니다. 아무래도 이제 권한 허용 방법을 찾아야 하지 않겠나 싶네요; 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.