일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 객체
- rxjava cold observable
- 서비스 vs 쓰레드
- 2022 플러터 안드로이드 스튜디오
- 자바 다형성
- 클래스
- jvm이란
- Rxjava Observable
- android ar 개발
- 플러터 설치 2022
- 안드로이드 레트로핏 crud
- jvm 작동 원리
- 멤버변수
- rxjava disposable
- 안드로이드 유닛 테스트 예시
- android retrofit login
- 안드로이드 유닛테스트란
- 스택 자바 코드
- 안드로이드 레트로핏 사용법
- 스택 큐 차이
- 안드로이드 라이선스 종류
- 안드로이드 os 구조
- ar vr 차이
- 큐 자바 코드
- 서비스 쓰레드 차이
- ANR이란
- 2022 플러터 설치
- 안드로이드 라이선스
- 안드로이드 유닛 테스트
- rxjava hot observable
- Today
- Total
나만을 위한 블로그
[Android] TedPermission 사용법 본문
참고한 사이트 : https://gun0912.tistory.com/61
만드신 분의 블로그
https://link2me.tistory.com/1509
이런 식으로도 코드를 짤 수 있구나 하고 참고한 블로그
안드로이드 앱 개발을 하다 보면 권한 설정의 벽에 마주치곤 한다.
인터넷, 갤러리 접근, SD 카드 접근 등등 어지간한 기능 구현 시에 꼭 필요한 필수요소라고 해도 과언이 아닌 듯하다.
그 때마다 일일이 접근 권한을 설정하는 코드를 검색하거나 찾는 것도 나름 일이었는데, 이런 고생을 꽤 많이 없애줄 권한 체크 라이브러리를 찾았다. 만드신 분께 무한 감사...
만드신 분의 블로그에도 사용법이 나와 있다. 설명도 잘 되어있어서 여길 먼저 정독하는 걸 추천한다.
다른 분들이 먼저 사용한 다음 알기 쉽게 설명을 써놓은 글도 검색하면 무수히 많다.
여기선 코드를 통째로 놓고 이런 식으로 쓴다는 것만 남겨두려고 한다.
xml 파일에는 이미지뷰 하나만 달랑 있는데 쓰진 않는다. 흰 배경이 밋밋해서 그냥 넣어둔 것 뿐이다.
먼저 사용하려면 라이브러리기 때문에 앱 수준 gradle 파일에 의존성 코드를 한 줄 넣어야 한다.
implementation 'gun0912.ted:tedpermission:2.0.0'
그리고 만드신 분이 예시로 사용하는 권한은 READ_CONTACTS니까 매니페스트에 미리 이걸 추가해둬야 한다.
난 이걸 까먹고 인터넷 권한을 갖다놓은 채 왜 안되는거지 하고 10분을 삽질했다.
<uses-permission android:name="android.permission.READ_CONTACTS"/>
아래는 xml, java 파일 코드들이다.
// activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/croppedImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</LinearLayout>
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
Toast.makeText(MainActivity.this, "권한 허가", Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
Toast.makeText(MainActivity.this, "권한 거부\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
}
};
TedPermission.with(this)
.setPermissionListener(permissionlistener)
.setRationaleMessage("구글 로그인을 하기 위해서는 주소록 접근 권한이 필요해요")
.setDeniedMessage("왜 거부하셨어요...\n하지만 [설정] > [권한] 에서 권한을 허용할 수 있어요.")
.setPermissions(Manifest.permission.READ_CONTACTS)
.check();
}
}
이렇게 설정하고 앱을 빌드하면 아래와 같이 작동한다.
만약 여러 권한을 설정해야 한다면 이런 식으로도 사용 가능한 듯하다.
.setPermissions(new String[] { Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA})
setPermissions()의 인자로 String 배열을 넣고 이 안에 내가 요청할 권한들을 때려박는 것이다.
아무튼 이 라이브러리를 쓰면 매우 편하게 권한 설정을 끝낼 수 있다.