안드로이드 permission 예제

어떻게 같은 일이 GPS locaction 및 카메라에 대한 권한 문제를 활성화하기위한 웹 뷰에서 수행 할 수 있습니까? 앱에 위험한 권한이 필요한 경우 해당 권한이 필요한 작업을 수행할 때마다 해당 권한이 있는지 확인해야 합니다. Android 6.0(API 수준 23)을 시작으로 사용자는 앱이 낮은 API 수준을 대상으로 하는 경우에도 언제든지 모든 앱에서 권한을 취소할 수 있습니다. 따라서 앱이 어제 카메라를 사용하더라도 오늘날에도 그 권한이 있다고 가정 할 수 없습니다. 권한 요청이 필요할 때마다 이 메서드를 호출하지만 첫 번째 호출 후 firstTimeAskingPermission(컨텍스트, 권한, false)를 사용하여 플래그를 false로 설정합니다. 첫 번째 경우 공유 기본 설정에 플래그를 지정하여 권한을 처음 묻는지 여부를 확인할 수 있습니다. 설치 시 자동으로 부여되며 해지할 수 없는 일부 권한이 있습니다. 우리는 그것을 정상 권한 (PROTECTION_NORMAL)이라고 부릅니다. 여기에 그들 중 전체 목록입니다 : 안드로이드는 위험하고 일부는 정상으로 일부 권한을 정의합니다. 두 형식 모두에서 공통적인 점은 매니페스트 파일에 정의해야 한다는 것입니다. 거부하기 전에 이 옵션을 선택합니다.

다음에 requestPermission를 호출할 때 이러한 종류의 권한에 대해 이 대화 상자가 더 이상 나타나지 않습니다. 대신, 그것은 단지 아무것도하지 않습니다. 참고: 사용자가 앱에서 중요한 권한을 거부하는 경우 요청 권한이 있어야 합니다.(문자열 권한) 은 사용자에게 사용 권한의 필요성을 설명하는 데 사용됩니다. 위의 그림에서 우리는 당신이 23보다 작은 안드로이드 sdk 버전으로 응용 프로그램을 실행하는 경우, 심지어 응용 프로그램은 위험한 (런타임) 권한이 필요합니다 것을 볼 수 있습니다, 응용 프로그램은 실행하는 데 필요한 권한을 부여할 사용자가 필요하지 않습니다. 이 샘플에서는 Gradle 빌드 시스템을 사용합니다. 이 프로젝트를 빌드하려면 « gradlew 빌드 » 명령을 사용하거나 Android Studio에서 « 프로젝트 가져오기 »를 사용합니다. 사용자가 권한 요청을 거부하는 경우 앱은 적절한 조치를 취해야 합니다. 예를 들어 앱에 해당 권한이 필요한 사용자의 요청된 작업을 수행할 수 없는 이유를 설명하는 대화 상자가 표시될 수 있습니다. 어쨌든이 새로운 런타임 권한은 응용 프로그램의 targetSdkVersion을 23으로 설정했을 때만 설명된 것처럼 작동하므로 응용 프로그램이 API 수준 23에서 이미 테스트되었음을 선언합니다.

그리고이 기능은 안드로이드 6.0 마시멜로에서만 작동합니다. 동일한 앱은 마시멜로 이전 장치에서 동일한 이전 동작으로 실행됩니다. 완벽하게 작동하려면이 새로운 권한 시스템을 지원하기 위해 응용 프로그램을 수정하는 것이 좋습니다. 2) 코드가 아직 런타임 권한을 지원하지 않는 경우 응용 프로그램의 targetSdkVersion을 23으로 설정하지 마십시오. 특히 안드로이드 스튜디오에서 새로운 프로젝트를 만들 때, targetSdkVersion에 대한 build.gradle 매번 살펴하는 것을 잊지 마세요! 참고: 런타임 권한 특정 메서드는 API 23 이후로만 사용할 수 있습니다.