반응형
Android 루팅 여부 체크하기
안드로이드 개발을 하다가 루팅된 기기에서는 앱이 동작하지 않도록 해야하는 요구사항이 생겼다
1. Command를 실행할 수 있는 Runtime.getRuntime().exec( command ); 을 이용하여 루트권한이 있는지 체크한다
private boolean isRooted() {
boolean runtimeFlag = false;
try{
Runtime.getRuntime().exec("su");
runtimeFlag = true;
}catch(Exception e){
runtimeFlag = false;
}
if(findBinary("su") || runtimeFlag){
return true;
}else{
return false;
}
}
- true : 루트권한이 있는 디바이스, false : 루트권한이 없는 디바이스
2. 루팅 여부를 체크하고 루트권한이 있는 기기라면 다이얼로그를 띄우고 확인을 누르면 앱을 종료하는 예제
if(isRooted()){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
alertDialogBuilder
.setMessage("루트권한을 가진 디바이스에서는 실행할 수 없습니다.")
.setCancelable(false)
.setPositiveButton("확인",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
moveTaskToBack(true);
finish();
android.os.Process.killProcess(android.os.Process.myPid());
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
return;
}
- 내 주력은 웹이지만 겉핥기로 안드로이드, 아이폰 개발을 조금 할 수 있어서 프로젝트에서 병행하게 되는 일이 많은데 규모가 있는 프로젝트에서는 항상 루팅여부를 체크하는 로직을 원하는 것 같다
swift4 에서 사용할 수 있는 동일한 포스팅은 아래 링크를 참고
반응형
'개발 > Android' 카테고리의 다른 글
구글 플레이스토어 앱 검색 안됨 - 현재 앱을 검토하는 중입니다 (5) | 2020.02.04 |
---|---|
구글 플레이 기기 및 네트워크 악용 정책 위반 - 유튜브 백그라운드 (2) | 2019.11.20 |
html 난독화는 가능한가 (Android Assets APK 압축해제) (0) | 2019.11.05 |
Android NetworkOnMainThreadException 해결 (0) | 2019.10.28 |
FCM 푸시 메시지를 구현하며 발생한 문제들을 모두 해결해보았다 (0) | 2019.10.07 |