बूट पर अपना ऐप शुरू करना
इसे पूरा करने का सबसे अच्छा तरीका आपके ऐप को लॉन्चर के रूप में सेट करना है
<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>
अपने ऐप को लॉक करना
सबसे विश्वसनीय तरीका लॉलीपॉप या अधिक से अधिक डिवाइस का उपयोग करना और उपयोग करना है
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();
}