LinkedIn Talent Solutions Partnership

Запустив ваше приложение при загрузке

, лучший способ выполнить это - установить ваше приложение в качестве запуска

<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

сначала вы должны установить свое приложение в качестве владельца устройства. NB, ваше устройство должно быть недоступно: если вы его зарегистрировали, вы должны сделать заводской сброс и пропустить регистрацию учетной записи.

, чтобы иметь возможность зарегистрировать свое приложение, вы должны сначала настроить компонент 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 (не требуется root)

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();
}
-3
задан Wilhelm 16 January 2019 в 11:29
поделиться