권한처리
<!-- 위험권한의 경우는checkpermission을 통해 사용자에게 동의를 받아야 함. -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 일반권한의 경우는 선언만 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- ContextCompat을 사용하기 위해 gradle(app) dependencies -->
implementation 'com.android.support:appcompat-v7:27.1.0'
<!-- Activity -->
private static final int MULTIPLE_PERMISSIONS = 101;
private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE};
<!-- Activity Oreo이상일 때만 처리 -->
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
checkPermission();
}
<!-- checkPermission -->
private boolean checkPermission(){
int result;
List<String> permissionList = new ArrayList<>();
for(String pm: permissions){
result = ContextCompat.checkSelfPermission(this, pm);
if(result != PackageManager.PERMISSION_GRANTED){
permissionList.add(pm);
}
}
if(!permissionList.isEmpty()){
ActivityCompat.requestPermissions(this, permissions, MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
<!-- 권한 체크 후 확인 (권한 설정을 안하면 닫는 로직으로 되어 있음) -->
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case MULTIPLE_PERMISSIONS:
if(grantResults.length > 0){
for(int i=0; i<permissions.length; i++){
if(grantResults[i] != PackageManager.PERMISSION_GRANTED){
showToastPermission();
}
}
}else {
showToastPermission();
}
break;
}
}
<!-- toast -->
private void showToastPermission(){
Toast.makeText(this, getString(R.string.permission_toast), Toast.LENGTH_SHORT).show();
finish();
}
'AOS' 카테고리의 다른 글
보안(서버도메인 등) (0) | 2021.06.01 |
---|---|
보안(서버도메인 등) (0) | 2021.06.01 |
google_fitness (0) | 2021.06.01 |
Firebase Analytics vs Google Analytics (0) | 2021.06.01 |
Android 안드로이드 - DatePicker Dialog Theme (0) | 2020.05.04 |