오늘도 삽질중

[안드로이드/Android] 6.0 이상 권한체크 및 부여하기 본문

안드로이드

[안드로이드/Android] 6.0 이상 권한체크 및 부여하기

Choi3950 2018. 6. 6. 08:29
반응형

안드로이드 6.0(마시멜로우) 이상부터는 manifast에 권한을 주는것 외에도 사용자에게 직접 권한을 받아야 합니다.


그래서 사진이나 갤러리 접근시에 권한을 부여 받아야만 실행이 가능하게 되는데요.


매번 권한을 요청받아야 할때마다 코드를 치는것이 매우 귀찮아서 별도의  권한 클래스를 만들고 필요할때 요청해서 사용해 보도록 하겠습니다.


public class Permission_Check extends AppCompatActivity {

public String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE ,
Manifest.permission.WRITE_EXTERNAL_STORAGE ,
Manifest.permission.CAMERA ,
Manifest.permission.RECORD_AUDIO}; //필요한 권한을 여기다 추가해주시면 됩니다.

public boolean CheckPermission(Context context , Activity activity){
int result;
List<String> permissionList = new ArrayList<>();
for (String pm : permissions) {
result = ContextCompat.checkSelfPermission(context, pm);
if (result != PackageManager.PERMISSION_GRANTED) { //사용자가 해당 권한을 가지고 있지 않을 경우 리스트에 해당 권한명 추가
permissionList.add(pm);
}
}
if (!permissionList.isEmpty()) { //리스트에 추가가 되면 권한이 없는것이므로 , 요청을 진행합니다.
ActivityCompat.requestPermissions(activity, permissionList.toArray(new String[permissionList.size()]), MULTIPLE_PERMISSIONS);
return false;
}
return true;
}

}


이렇게 권한클래스를 별도로 만들어주고 다른 클래스에서 사용하려면


public class MainActivity extends AppCompatActivity {

private Permission_Check permission_check;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

permission_check = new Permission_Check();

permission_check.CheckPermission(getApplicationContext(),this);
}
}


클래스 객체를 선언하고 클래스에 내장된 메소드인 CheckPermission() 을 호출해 주시면 됩니다.



반응형
Comments