2017-04-01 1 views
1

LocationManager를 사용하여 타블렛 위치를 얻고 활용하는 서비스를 구현하고 있습니다. 이 서비스는 활동으로 시작하고 중지합니다.서비스에서 사용 권한 요청 방법

최신 Android는 런타임에 권한을 요청해야합니다. 이제는 어떤 위치 관리자 기능을 사용하고 requestPermission 함수를 추가하고 onRequestPermissionResult을 무시할 때마다 onCreate, checkSelfPermissionrequestPermission을 사용하여 작업을 수행했습니다.

잘 작동합니다.

이제는 내 서비스를 위해 동일한 작업을 수행해야하지만 이러한 기능은 작업에서만 작동하는 것 같습니다. 서비스에서 권한을 활성화하려면 어떻게해야합니까?


단지 경우, 나는 이미 시작하고 서비스에

답변

1

서비스의 사용 권한을 어떻게 활성화 할 수 있습니까?

그렇지 않습니다. 활동에서 사용 권한을 활성화 (즉, 요청)합니다. 그것은 협상 할 수 없습니다.

활동이 서비스를 시작하기 전에 권한을 요청하거나 궁극적으로 서비스가 시작되도록하는 것 (예 : JobScheduler으로 작업 예약)이 이상적입니다.

당신이 당신의 서비스가 더 이상 — 아마도 사용자가 당신이 다시 요청 활동 권한에 사용자를지도하는 Notification을 올릴 수 — 설정에서 그들을 취소 필요한 권한이 있는지 확인되면.

서비스가 권한을 요청하는 활동을 시작하는 것이 기술적으로 가능합니다. 일반적으로 이것은 좋은 생각이 아닙니다. 사용자가 그 순간에 무엇을하고 있는지 알지 못하기 때문에 사용자는이 권한 요청으로 사용자를 방해하는 것을 불만 스러울 수 있습니다.

+0

나는 그것에 완전히 동의 할 수있다.내 앱에는 실제로 활동의 구조가 있습니다.이 서비스는 나중에 권한을 요청하여 나중에 서비스를 시작합니다. 이제 * 어떻게 이러한 권한을 서비스로 전송합니까? (이상적으로는 활동을 종료 한 후에도 서비스가 실행되기를 원합니다.) – KansaiRobot

+1

@KansaiRobot : "이제 어떻게 이러한 권한을 서비스로 전송합니까?" - "이전 할"것이 없습니다. 런타임 권한을 얻은 후에 서비스를 시작하거나 바인딩하십시오. – CommonsWare

1

이 어떻게 권한을 활성화 할 수있는 서비스를 중지하고 활동 권한을 요청했다?

서비스에서 권한을 요청할 수 없습니다. UI에서 사용자에게 표시되어야하는 권한을 명시 적으로 요청해야합니다. 그러나 활동의 허가를 요청할 수 있으며, 성공하면 다시 사용자가 앱 사용 권한을 해제 할 때까지 해당 자원에 액세스 할 수 있습니다.

어떻게 이러한 권한을 서비스에 전송할 수 있습니까?

권한이 전체 앱에 할당되어 있으므로 한 액티비티에서 다른 액티비티로 또는 한 액티비티에서 서비스로 전송할 필요가 없습니다. 액티비티에서 권한을 얻으면 해당 권한이 전체 앱에 할당되고 서비스가 리소스에 액세스 할 수 있습니다. 건배 :

+0

괜찮습니다. 이해할 수 있습니다. 무엇이든 내 앱의 구조가 준비가 되었다면 (활동은 이미 권한을 얻고 서비스를 시작합니다). 문제는 * 어떻게 이러한 사용 권한을 서비스에 "전송"할 수 있습니까? – KansaiRobot

관련 문제