Android 고유기능 #1-1

채현·2023년 3월 2일
0

안드로이드

목록 보기
16/37

ⓐ Notification

Android13(api 33)부터 알림에 대한 동적 permission이 추가됨
: 사용자가 알림을 받을지 말지를 선택할 수 있어야 함

정적 퍼미션 : 마켓에서 다운로드 받을때 사용자에게 어떤 것을 사용하는지 알림
(카메라 등 악용되지 않게 하기 위해서)

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

BUT 사용자들이 다운로드 할 때 생각보다 부주의, 잘 읽지 않음
--> Danger Permission 앱 (위치, 카메라) 혹은 사용자가 선택권을 가져야하는 정보 (알림)가 사용될 때 사용할 정보를 제공할 것인지 사용자는 'yes or no'로 선택권을 가져야 함 : 동적 퍼미션

한 번만 허용하면 됨 --> 이 어플리케이션이 알림에 대한 퍼미션을 허용한 상태인지 체크해야 함
13 이전 버전에서는 무시됨!

ActivityResultLauncher<String> permissionResultLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), new ActivityResultCallback<Boolean>() {
        @Override
        public void onActivityResult(Boolean result) {
            if (result) Toast.makeText(MainActivity.this, "알림을 허용했습니다.", Toast.LENGTH_SHORT).show();
            else Toast.makeText(MainActivity.this, "알림을 거부했습니다.", Toast.LENGTH_SHORT).show();
        }
});

int checkResult = ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS);
            if(checkResult == PackageManager.PERMISSION_DENIED) { //체크 결과가 거부되어있을 경우
                //알림 허용을 요청하는 다이얼로그를 보이기 --> 개발자의 악의적인 의도를 배제하기 위해서 직접 다이얼로그를 만들어 띄울 수 없음
                //requestPermissions(); //이전 방식
                //permission 요청 결과를 받아주는 대행사 객체 이용
                permissionResultLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
            }

ⓑ Broadcast Receiver

디바이스의 특정 상태 [문자수신, 배터리부족, 부팅완료, gps 상태정보 등]를 OS 에서 방송해주면 이를 수신할 때 사용

Activity / Broadcast / Service 사이의 횡단은 Intent
새로운 화면으로 이동할때는 액티비티 기능을 상속받은 클래스를 만들어서 Intent로 실행
--> 마찬가지로 새로운 브로드캐스트로 이동하고 싶다면 브로드캐스트 기능을 상속받은 클래스를 만들어서 Intent로 실행

짱 어려워

0개의 댓글