Android Studio

[안드로이드] android 파일 저장 권한 허가 - Permission 마시멜로 권한 체크(TedPermission)

i-moo 2017. 4. 7. 15:26
반응형

마시멜로 권한 체크를 위한 퍼미션 작업을 해주기위해 검색을 하다 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();
}














반응형