ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 마시멜로 권한 획득하기
    Android 2016. 3. 22. 15:29
    Android M 프리뷰에서는 퍼미션에 대한 변경사항이 있다.
    아마 해킹에 취약한 안드로이드의 오명으로 인해 보안을 강화하려는 의도로 보인다.

    1) PROTECTION_NORMAL을 제외한 퍼미션의 경우, 접근 직전에 권한을 요구하도려록 변경

    PROTECTION_NORMAL 로 분류된 퍼미션은 다음과 같다.
    android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
    android.permission.ACCESS_NETWORK_STATE
    android.permission.ACCESS_WIFI_STATE
    android.permission.ACCESS_WIMAX_STATE
    android.permission.BLUETOOTH
    android.permission.BLUETOOTH_ADMIN
    android.permission.BROADCAST_STICKY
    android.permission.CHANGE_NETWORK_STATE
    android.permission.CHANGE_WIFI_MULTICAST_STATE
    android.permission.CHANGE_WIFI_STATE
    android.permission.DISABLE_KEYGUARD
    android.permission.EXPAND_STATUS_BAR
    android.permission.FLASHLIGHT
    android.permission.GET_ACCOUNTS
    android.permission.GET_PACKAGE_SIZE
    android.permission.INTERNET
    android.permission.KILL_BACKGROUND_PROCESSES
    android.permission.MODIFY_AUDIO_SETTINGS
    android.permission.NFC
    android.permission.PERSISTENT_ACTIVITY
    android.permission.READ_SYNC_SETTINGS
    android.permission.READ_SYNC_STATS
    android.permission.READ_USER_DICTIONARY
    android.permission.RECEIVE_BOOT_COMPLETED
    android.permission.REORDER_TASKS
    android.permission.SET_TIME_ZONE
    android.permission.SET_WALLPAPER
    android.permission.SET_WALLPAPER_HINTS
    android.permission.SUBSCRIBED_FEEDS_READ
    android.permission.TRANSMIT_IR
    android.permission.VIBRATE
    android.permission.WAKE_LOCK
    android.permission.WRITE_SETTINGS
    android.permission.WRITE_SYNC_SETTINGS
    android.permission.WRITE_USER_DICTIONARY
    com.android.alarm.permission.SET_ALARM
    com.android.launcher.permission.INSTALL_SHORTCUT

    2) 퍼미션 정책 변경에 따른 동작

    새로운 퍼미션 정책이 적용 안된 기존 앱에 대해서는 Crash가 가급적 발생하지 않도록 Exception대신 비어있는
    데이터를 반환.
    새 퍼미션 모델을 문제없이 사용하기 위해서는 퍼미션이 이미 있는지 확인하는 checkSelfPermission,
    없을 시 요청하는 requestPermission,

    참조 : http://developer.android.com/preview/features/runtime-permissions.html#normal




    권한 획득을 위한 주요 API
    ========================
    안드로이드 M Preview의 예제코드 중 주요 코드를 살펴보겠습니다.
    권한 획득하기 전 권한 유효성 체크
    checkSelfPermission(String) != PackageManager.PERMISSION_GRANTED
    위와 가은 코드를 통해 허용돼 사용 가능한지 불가능한지에 대한 permission을 체크할 수 있습니다.
    현재 API에서는 아쉽게도 1번에 1개밖에 하지 못하는군요.

    설명이 필요할 경우 처리
    shouldShowRequestPermissionRationale(String)
    권한 획득이 필요한 이유를 설명해야 한다면 다음 옵션을 추가하여 별도 처리가 가능합니다.

    권한 획득을 위한 API
    Activity.requestPermissions(String[], int)
    위의 권한 중 Group과 permission 2가지를 선택적으로 던질 수 있습니다.
    한 번에 1개가 아닌 String[] 배열로 넘겨 한 번에 필요한 permission을 한 번에 획득할 수 있습니다.

    requestPermission의 경우 callback으로 return 됩니다.
    onRequestPermissionResult(int, String[], int[])
    권한 획득에 대한 성공/실패에 대한 정보를 담은 callback입니다.
    다음 함수 내에서 배열로 전달되므로 필요한 퍼미션이 잘 받아졌는지 확인하여 이후 처리가 가능합니다.


    'Android' 카테고리의 다른 글

    TitleBar 없애기  (0) 2017.03.17
    NDK 테스트하기  (0) 2016.03.07
    볼륨 조절하기  (0) 2015.08.18
    암시적 인텐트 사용  (0) 2015.07.23

    댓글

Designed by Tistory.