public class Permission3 extends AppCompatActivity {
TextView mTv3;
boolean perm1, perm2, perm3;
AlertDialog alertDialog1, alertDialog2, alertDialog3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ceti_permission3);
mTv3 = (TextView) findViewById(R.id.tv3);
mTv3.append("권한체크 전...!\n");
if (ContextCompat.checkSelfPermission(CetiPermission3.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
perm1 = true;
}
if (ContextCompat.checkSelfPermission(CetiPermission3.this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
perm2 = true;
}
if (ContextCompat.checkSelfPermission(CetiPermission3.this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
perm3 = true;
}
if (!perm1 || !perm2 || !perm3) {
ActivityCompat.requestPermissions(CetiPermission3.this, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_PHONE_STATE, Manifest.permission.ACCESS_FINE_LOCATION}, 300);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 300 && grantResults.length > 0) {
if (grantResults[0] == -1) {
dialogMaker(alertDialog1, "이 앱을 실행하기 위해서는 사진과 영상을 촬영할 수 있는 권한이 필요합니다.");
} else if (grantResults[0] == 0) {
perm1 = true;
}
if (grantResults[1] == -1) {
dialogMaker(alertDialog2, "이 앱을 실행하기 위해서는 전화를 걸고 관리할 수 있는 권한이 필요합니다.");
} else if (grantResults[1] == 0) {
perm2 = true;
}
if (grantResults[2] == -1) {
dialogMaker(alertDialog3, "이 앱을 실행하기 위해서는 위치정보를 조회할 수 있는 권한이 필요합니다.");
} else if (grantResults[2] == 0) {
perm3 = true;
}
}
}
DialogInterface.OnClickListener dialogListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
if (dialog == alertDialog1 && i == DialogInterface.BUTTON_POSITIVE) {
ActivityCompat.requestPermissions(CetiPermission3.this, new String[]{Manifest.permission.CAMERA}, 1);
} else if (dialog == alertDialog2 && i == DialogInterface.BUTTON_POSITIVE) {
ActivityCompat.requestPermissions(CetiPermission3.this, new String[]{Manifest.permission.READ_PHONE_STATE}, 2);
} else if (dialog == alertDialog3 && i == DialogInterface.BUTTON_POSITIVE) {
ActivityCompat.requestPermissions(CetiPermission3.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 3);
}
}
};
public void dialogMaker(AlertDialog dialog, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("알림");
builder.setMessage(message);
builder.setPositiveButton("허가",dialogListener);
builder.setNegativeButton("취소",null);
builder.setCancelable(false);
dialog=builder.create();
dialog.show();
}
}
필요할 경우 그대로 복사해서 사용해도 된다!
승인이 필요한 권한만 교체하거나 추가해서 사용하자.
거부한 사용자에게 승인을 권하는 멘트도 자유롭게!
'개발자 지식 > 안드로이드' 카테고리의 다른 글
[안드로이드] 앱 내에서 이메일 보내기 (0) | 2020.08.28 |
---|---|
[안드로이드] java.net.SocketException: socket failed: EPERM (Operation not permitted) 에러 해결 (0) | 2020.08.27 |
[안드로이드] Navigation Drawer(네이게이션 드로어) 사용법 (0) | 2020.08.27 |
[안드로이드] Toolbar의 사용법 (0) | 2020.08.27 |
[안드로이드] No static method metafactory 오류 (0) | 2020.08.26 |