마시멜로 권한 체크를 위한 퍼미션 작업을 해주기위해 검색을 하다 TedPermission을 알게 되었다.
정말 편리하게 사용할 수 있는 라이브러리였다.
정말 감사하다.!!!
우선 참고 사이트!!
https://developer.android.com/training/permissions/index.html
http://gun0912.tistory.com/61 (박상권님의 블로그 : 직접 만드신 분)
https://github.com/ParkSangGwon/TedPermission (박상권님의 GitHub)
http://kkensu.tistory.com/18 (정리되어 있는 아저씨v2의 블로그)
너무너무 감사하다!!
지금 당장 사용할 파일 저장에 대한 권한 체크를 해주려고 한다.
외장메모리를 사용하기 위해서 매니페스트에는 퍼미션을 추가해주었다.
<!-- 외부메모리 사용 퍼미션 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
이제 마시멜로 권한 체크를 해주기 위해 TedPermission을 시작한다.
1. build.gradle(Project)에 maven { url "https://jitpack.io" } 추가
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}
2. build.gradle(Module:app)에 com.github.ParkSangGwon:TedPermission:v1.0.11 추가
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.github.ParkSangGwon:TedPermission:v1.0.11'
testCompile 'junit:junit:4.12'
}
3. 퍼미션 리스너 추가
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
Toast.makeText(ExternalMemoryActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show();
// 허락을 한 경우 실행할 부분
}
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
Toast.makeText(ExternalMemoryActivity.this, "권한이 없습니다.\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
// 거절을 한 경우 실행할 부분
}
};
4. new TedPermission 추가
setPermissions부분에 권한 체크할 목록을 넣어주면 된다.
new TedPermission(this)
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.check();
나는 함수 하나로 만들어 파일 저장에대한 마시멜로 권한 체크를 함수를 호출하면 되도록 해놓았다.
그 함수에대한 소스..
// [퍼미션 체크] ==================================================================================
private void checkTedPermission(){
PermissionListener permissionlistener = new PermissionListener() {
@Override
public void onPermissionGranted() {
Toast.makeText(ExternalMemoryActivity.this, "Permission Granted", Toast.LENGTH_SHORT).show();
// SDcard 의 상태가 쓰기 가능한 상태로 마운트되었는지 확인
if(!isExternalStorageWritable()){
Toast.makeText(ExternalMemoryActivity.this, "SDcard Not Mounted. Create", Toast.LENGTH_SHORT).show();
return;
}
// [파일 다운로드] ===================================
String fileName = exFileNameET.getText().toString() + "";
String fileContext = exFileContextET.getText().toString() + "";
// 파일 제목을 입력하지 않았을 경우
if(fileName == null || fileName == ""){
fileName = "test" + Calendar.DATE + ".txt";
}
// 파일 내용을 입력하지 않았을 경우
if(fileContext == null || fileContext == "") {
fileContext = "hello world!\n";
}
externalCreate2File(fileName, fileContext);
// ===============================================
}
@Override
public void onPermissionDenied(ArrayList<String> deniedPermissions) {
Toast.makeText(ExternalMemoryActivity.this, "권한이 없습니다.\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show();
}
};
new TedPermission(this)
.setPermissionListener(permissionlistener)
.setDeniedMessage("If you reject permission,you can not use this service\n\nPlease turn on permissions at [Setting] > [Permission]")
.setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
.check();
}
'Android Studio' 카테고리의 다른 글
[안드로이드] android studio 자동 import 설정 (0) | 2017.04.07 |
---|---|
android permission 파일 저장 (0) | 2017.04.07 |
[안드로이드] android ScrollView 안의 ListView의 스크롤 (0) | 2017.04.07 |
[안드로이드] android scrollview 안에 listview (0) | 2017.04.07 |
[안드로이드] android 폴더 만들기 (0) | 2017.04.07 |