난 정말 최고야 멋있어
안드로이드 기기관리자 사용하기 본문
1. 메니페스트 설정하기
<receiver android:name=".FactoryReset" //클래스 이름 써주기
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/factoryreset" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
리시버를 만들고 권한에 BIND_DEVICE_ADMIN을 허용해주어야한다
메타데이터도 선택이 아닌 필수!!
인텐트 필터를 만들고 안에 액션으로 DEVICE_ADMIN_ENABLED 속성을 주어야 한다
2.device_admin XML 파일 짜기
<device-admin>
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
<expire-password />
<encrypted-storage />
<disable-camera />
</uses-policies>
</device-admin>
필요한 정책들만 주면 된다 use-polices 블록까지는 필수!!
3. DeviceAdminReciever 상속 클래스 작성하기
class FactoryReset : DeviceAdminReceiver()
{
override fun onEnabled(context: Context, intent: Intent) {
super.onEnabled(context, intent)
}
override fun onDisabled(context: Context, intent: Intent) {
super.onDisabled(context, intent)
}
}
음.. 근데 굳이 구현부를 구현할필요가 있나 싶기도 한데.. 잘 모르겠다
4. 진짜 코드 작성하기
val dpm = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val admin = ComponentName(this,FactoryReset::class.java)
if (dpm.isAdminActive(admin))
dpm.wipeData(0)
else
Toast.makeText(this,"기기 관리자 설정을 해주세요!",Toast.LENGTH_SHORT).show()
꼭!! isAdminActive()로 확인후에 작업하기 맨첨에 try catch 안에 집어넣고 삽질 ㅋㅋ;;
원래 정상적인 프로그램이라면 else 부분에 기기관리자 인텐트를 넣었겠지만 귀찮아서 패스
아니 근데 원래 에뮬레이터는 기기관리자를 통한 초기화가 안되나;;