Memulai aplikasi Anda saat boot
cara TERBAIK untuk melakukannya adalah dengan menyetel aplikasi Anda sebagai peluncur
<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>
Mengunci aplikasi Anda
cara paling andal adalah menggunakan perangkat dengan Lollipop atau lebih tinggi dan memanfaatkannya
startLockTask
pertama, Anda harus menyetel aplikasi Anda sebagai pemilik perangkat. NB perangkat Anda harus tidak disediakan: jika Anda mendaftarkannya, Anda harus melakukan reset pabrik dan melewati pendaftaran akun.
agar dapat mendaftarkan aplikasi Anda, Anda harus menyiapkan komponen DeviceAdminReceiver terlebih dahulu:
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!
}
}
setelah Anda memiliki perangkat yang tidak disediakan, Anda dapat meluncurkan perintah berikut dari adb ( tidak perlu root )
adb shell dpm set-device-owner com.example.myapp/.MyDeviceAdminReceiver
untuk menghindari android meminta izin pengguna untuk menyematkan aplikasi Anda, Anda harus memanggil setLockTaskPackages
akhirnya!
@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();
}