부팅시 앱 시작
이를 수행하는 가장 좋은 방법은 앱을 런처로 설정하는 것입니다.
<activity ...
android:launchMode="singleInstance"
android:windowActionBar="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
앱 잠금
가장 신뢰할 수있는 방법은 Lollipop 이상의 기기를 사용하고
startLockTask
먼저 앱을 기기 소유자로 설정해야합니다. 주의 : 장치는 프로비저닝되지 않아야합니다. 등록한 경우 공장 초기화를 수행하고 계정 등록을 건너 뛰어야합니다.
앱을 등록 할 수 있으려면 먼저 DeviceAdminReceiver 구성 요소를 설정해야합니다.
package com.example.myapp;
public class MyDeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
Toast.makeText(context, "Device admin permission received", Toast.LENGTH_SHORT).show();
}
@Override
public CharSequence onDisableRequested(Context context, Intent intent) {
return "are you sure?";
}
@Override
public void onDisabled(Context context, Intent intent) {
Toast.makeText(context, "Device admin permission revoked", Toast.LENGTH_SHORT).show();
}
@Override
public void onLockTaskModeExiting(Context context, Intent intent) {
// here you must re-lock your app. make your activity know of this event and make it call startLockTask again!
}
}
프로비저닝되지 않은 기기가 있으면 adb에서 다음 명령을 실행할 수 있습니다 ( 루트 필요 없음 ).
adb shell dpm set-device-owner com.example.myapp/.MyDeviceAdminReceiver
안드로이드가 앱을 고정하기 위해 사용자 권한을 요청하지 않도록하려면 setLockTaskPackages를 호출해야합니다.
드디어!
@Override
public void onResume(){
super.onResume();
DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService(
Context.DEVICE_POLICY_SERVICE);
ComponentName mAdminComponentName = new ComponentName(getApplicationContext(), MyDeviceAdminReceiver.class);
mDevicePolicyManager.setLockTaskPackages(mAdminComponentName, new String[]{getPackageName()});
startLockTask();
}
@Override
public void finish(){
stopLockTask();
super.finish();
}