android M(6.0) 권한 적합

Android 6.0 권한 적합
안드로이드 6.0의 가장 큰 변화는 권한의 신청입니다. 6.0 이하일 때 저희 앱에 필요한 권한은 manfest에서 신청하고 사용하십시오.앱을 설치할 때 권한 성명에 따라 권한 목록을 표시하고 사용자는 동의한 권한만 앱을 설치할 수 있습니다.6.0 이후에 우리는 직접 설치할 수 있다. 앱이 우리가 부적절한 권한을 부여해야 할 때 사용자는 거부할 수 있다. 예를 들어 앱이 통신록에 접근해야 하기 때문에 우리는 이 권한을 거부할 수 있다.또한 우리는 설정 페이지에 가서 구체적인 응용 아래의 권한 옵션에서 응용 권한을 보고 변경할 수 있다.안드로이드 6.0의 새로운 권한 메커니즘은 사용자의 프라이버시 데이터를 잘 보호합니다.
새로운 규칙은 권한을 두 가지 유형으로 나눈다
  • Normal Permission과 같은 권한은 일반적으로 사용자의 프라이버시와 관련이 없고 사용자가 자발적으로 수여할 필요가 없다. 예를 들어 휴대전화 진동, 인터넷 방문 등이다.이러한 권한은 다음과 같습니다.
  • Dangerous Permission과 같은 권한은 일반적으로 사용자의 프라이버시와 관련되기 때문에 사용자가 수동으로 권한을 부여해야 한다. 예를 들어 앨범을 방문하고 통신록을 방문하는 등이다.

  • 일반 권한은 다음과 같습니다.
    
    ACCESS_LOCATION_EXTRA_COMMANDS
    
    ACCESS_NETWORK_STATE
    
    ACCESS_NOTIFICATION_POLICY
    
    ACCESS_WIFI_STATE
    
    BLUETOOTH
    
    BLUETOOTH_ADMIN
    
    BROADCAST_STICKY
    
    CHANGE_NETWORK_STATE
    
    CHANGE_WIFI_MULTICAST_STATE
    
    CHANGE_WIFI_STATE
    
    DISABLE_KEYGUARD
    
    EXPAND_STATUS_BAR
    
    GET_PACKAGE_SIZE
    
    INSTALL_SHORTCUT
    
    INTERNET
    
    KILL_BACKGROUND_PROCESSES
    
    MODIFY_AUDIO_SETTINGS
    
    NFC
    
    READ_SYNC_SETTINGS
    
    READ_SYNC_STATS
    
    RECEIVE_BOOT_COMPLETED
    
    REORDER_TASKS
    
    REQUEST_INSTALL_PACKAGES
    
    SET_ALARM SET_TIME_ZONE
    
    SET_WALLPAPER
    
    SET_WALLPAPER_HINTS
    
    TRANSMIT_IR
    
    UNINSTALL_SHORTCUT
    
    USE_FINGERPRINT
    
    VIBRATE WAKE_LOCK
    
    WRITE_SYNC_SETTINGS
    

    위험 권한은 다음과 같습니다.
    
    group:android.permission-group.CONTACTS
    
    permission:android.permission.WRITE_CONTACTS
    
    permission:android.permission.GET_ACCOUNTS
    
    permission:android.permission.READ_CONTACTS
    
    group:android.permission-group.PHONE
    
    permission:android.permission.READ_CALL_LOG
    
    permission:android.permission.READ_PHONE_STATE
    
    permission:android.permission.CALL_PHONE
    
    permission:android.permission.WRITE_CALL_LOG
    
    permission:android.permission.USE_SIP
    
    permission:android.permission.PROCESS_OUTGOING_CALLS
    
    permission:com.android.voicemail.permission.ADD_VOICEMAIL
    
    group:android.permission-group.CALENDAR
    
    permission:android.permission.READ_CALENDAR
    
    permission:android.permission.WRITE_CALENDAR
    
    group:android.permission-group.CAMERA
    
    permission:android.permission.CAMERA
    
    group:android.permission-group.SENSORS
    
    permission:android.permission.BODY_SENSORS
    
    group:android.permission-group.LOCATION
    
    permission:android.permission.ACCESS_FINE_LOCATION
    
    permission:android.permission.ACCESS_COARSE_LOCATION
    
    group:android.permission-group.STORAGE
    
    permission:android.permission.READ_EXTERNAL_STORAGE
    
    permission:android.permission.WRITE_EXTERNAL_STORAGE
    
    group:android.permission-group.MICROPHONE
    
    permission:android.permission.RECORD_AUDIO
    
    group:android.permission-group.SMS
    
    permission:android.permission.READ_SMS
    
    permission:android.permission.RECEIVE_WAP_PUSH
    
    permission:android.permission.RECEIVE_MMS
    
    permission:android.permission.RECEIVE_SMS
    
    permission:android.permission.SEND_SMS
    
    permission:android.permission.READ_CELL_BROADCASTS
    

    우리는 위험 권한이 모두 조를 나누는 것을 보았는데, 이런 조를 나누는 권한 메커니즘이 무슨 소용이 있겠는가?
    우리가 6.0 이상의 기기에서 앱을 실행할 때 우리가 특정한 위험 권한을 신청할 때 이미 사용자에게 같은 그룹의 특정한 위험 권한을 부여받았다면 시스템은 즉시 수여하고 사용자가 수동으로 동의를 클릭할 필요가 없다. 예를 들어 우리가 신청READ_CALENDAR한 경우 사용자가 이전에 동의WRITE_CALENDAR한 적이 있다면 시스템은 직접 수여한다.
    6.0 이상에서 권한은 그룹별로 부여되고 특정한 권한 그룹의 특정한 권한이 동의되면 전체 그룹의 권한은 수여되고 그룹 내의 다른 권한이 사용될 때 시스템은 직접 동의한다.
    관련 API
  • manfest에 필요한 권한 추가
  • 우리가 어떤 위험 권한을 사용해야 할 때 이 권한이 있는지 확인해야 한다
  • checkSelfPermission(Activity activity,String permission)

    허가에 동의한 경우 Package Manager가 반환됩니다.PERMISSION_GRANTED
  • 되돌아오는 결과가 GRANTED가 아니라면 권한을 신청해야 하지만 그 전에 권한 대화상자를 보여줄 수 있는지 판단해야 한다.권한을 신청할 때 대화상자에 다음에 알림을 하지 않는 옵션이 있기 때문에 만약에 사용자가 이 옵션을 선택했다면 우리가 권한을 신청하는 방법도 대화상자가 나타나지 않을 것이다. 이 다음에 우리는 사용자에게 설정에서 수동으로 권한을 수정할 수 있음을 알릴 수 밖에 없다.
  • shouldShowRequestPermissionRationale(Activity activity,String permission)
    

    만약 이 함수가true로 되돌아온다면 사용자가 알림을 주지 않는 옵션을 선택하지 않았음을 나타냅니다. 신청 권한 대화상자는false로 되돌아오면신청 권한 대화상자는 다시 튀어나오지 않습니다. 신청 결과는 이전에 동의하지 않았습니다.
    주의: 프로그램이 이 권한을 처음 신청했을 때, 이 방법이 되돌아오는 값은false입니다.왜냐하면 첫 번째 신청 권한 팝업 상자가 왔을 때'알림 안 하기'옵션이 없어요!
  • 대화상자가 트루로 되돌아오는 것을 검사하면 신청 권한을 호출할 수 있습니다
  • requestPermissions(Activity activity,String[] permissions,int requestCode);
    

    우리는 신청 권한은 많은 권한을 신청할 수 있고 대화상자는 당신이 전송한 권한의 순서에 따라 순서대로 팝업되며 사용자는 모든 신청 권한에 대해 결정을 해야 한다는 것을 보았다.
  • 신청 권한의 리셋 처리,Activity의 복사
  • public void onRequestPermissionsResult(int requestCode,
    
            String permissions[], int[] grantResults) 
    

    되돌아오는 방법에는 당신이 신청한 권한 수조와 그에 대응하는 사용자가 결과를 수여하는 수조가 있습니다.
    총결산
    위의 방법에 따라 우리 자신의 권한 코드를 봉인하면 6.0 이상의 목적을 실현할 수 있다.6.0 다른 업데이트도 있지만 개발에 있어서 가장 중요한 변화는 권한 신청의 변경이다.

    좋은 웹페이지 즐겨찾기