Android Permission Dispatcher로 권한 얻기
안드로이드 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);
저 부분이 권한을 실질적으로 요청하는 소스이다. 버튼이 눌렸을 때 저 소스를 실행해 주어도 된다.
끝으로
이 라이브러리 덕에 권한 설정이 간편해 졌고, 걱정하지 않아도 될 것 같다.
'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 |
댓글
이 글 공유하기
다른 글
-
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