이 영역을 누르면 첫 페이지로 이동
CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

페이지 맨 위로 올라가기

CodeJUN

심심해서 하는 블로그

Android Permission Dispatcher로 권한 얻기

  • 2018.10.08 14:51
  • Android

안드로이드 6.0인가.. 부터 안드로이드도 (드디어) iOS처럼 민감한 권한은 사용자에게 직접적으로 허용을 받아야 사용할 수 있도록 되어있다. 이에따라, 개발자들은 따로 예외처리를 하여 권한을 얻고는 했다. 이 과정이 매우 귀찮아 Github에서 무려 8K 개의 Star를 받은 PermissionsDispatcher 라이브러리를 이용하여 권한을 받는 방법을 쓰도록 하겠다.


Gradle에 디펜던시 추가

implementation "com.github.hotchemi:permissionsdispatcher:4.0.0-alpha1"
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:4.0.0-alpha1"

app단 Gradle의 Dependencies에 위 두 줄을 추가한다.


권한 요청하기

권한을 얻고자 하는 뷰의 클래스에 가서 어노테이션을 하나씩 추가해 주기만 하면 된다.
우선,

@RuntimePermissions
public class WelcomeActivity extends AppCompatActivity {

보이는 바와 같이 @RuntimePermissions를 추가한다. 그 다음,

@NeedsPermission({Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
void showLocation() {
Log.d("Permission", "Granted!");
}

@OnShowRationale({Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
void showRationaleForLocation(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("디바이스 검색을 위해 권한을 허용해 주시기 바랍니다.")
.setPositiveButton(android.R.string.ok, (dialog, button) -> request.proceed())
.setNegativeButton(android.R.string.cancel, (dialog, button) -> request.cancel())
.setCancelable(false)
.show();
}

@OnPermissionDenied({Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
void showDeniedForLocation() {
Toast.makeText(this, "권한을 허용해 주세요.", Toast.LENGTH_SHORT).show();
finish();
}

@OnNeverAskAgain({Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION})
void showNeverAskForLocation() {
Toast.makeText(this, "권한 허용을 해주지 않으신다면, 서비스 이용이 불가합니다.", Toast.LENGTH_SHORT).show();
finish();
}

위와 같이 추가한다.


거의 끝났다. 이제 소스 한 줄만 추가하면 된다.

WelcomeActivityPermissionsDispatcher.showLocationWithPermissionCheck(context);

저 부분이 권한을 실질적으로 요청하는 소스이다. 버튼이 눌렸을 때 저 소스를 실행해 주어도 된다.


끝으로

이 라이브러리 덕에 권한 설정이 간편해 졌고, 걱정하지 않아도 될 것 같다.

  • PermissionsDispatcher Github (클릭)


저작자표시 비영리 동일조건 (새창열림)

'Android' 카테고리의 다른 글

Android Vector Drawable(Asset) 사용하기  (0) 2018.11.26
Android Blufi 연결(Connect)하기 (1)  (0) 2018.10.15
AndroidX 사용하기  (0) 2018.10.05
'Android resource compilation failed' 에러 해결  (4) 2018.09.30
18:9 이상 화면비 지원하기  (4) 2018.08.02

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Android Vector Drawable(Asset) 사용하기

    Android Vector Drawable(Asset) 사용하기

    2018.11.26
  • Android Blufi 연결(Connect)하기 (1)

    Android Blufi 연결(Connect)하기 (1)

    2018.10.15
  • AndroidX 사용하기

    AndroidX 사용하기

    2018.10.05
  • 'Android resource compilation failed' 에러 해결

    'Android resource compilation failed' 에러 해결

    2018.09.30
다른 글 더 둘러보기

정보

CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

  • CodeJUN의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 방명록

카테고리

  • 분류 전체보기 (54)
    • Android (38)
    • BlockChain (4)
    • React Native (4)
    • 아두이노 (2)
    • 프로젝트 (6)

공지사항

  • 공지 - 블로그를 시작하며

태그

  • 아두이노
  • Android
  • 안드로이드
  • 강좌
  • Firebase
  • c++
  • C
  • arduino

나의 외부 링크

  • Github

정보

CODE_JUN의 CodeJUN

CodeJUN

CODE_JUN

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © CODE_JUN. Designed by Fraccino.

티스토리툴바