Shelter/app/src/main/java/net/typeblog/shelter/receivers/ShelterDeviceAdminReceiver.java

48 lines
1.9 KiB
Java

package net.typeblog.shelter.receivers;
import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import net.typeblog.shelter.ui.MainActivity;
import net.typeblog.shelter.util.LocalStorageManager;
public class ShelterDeviceAdminReceiver extends DeviceAdminReceiver {
@Override
public void onEnabled(Context context, Intent intent) {
super.onEnabled(context, intent);
LocalStorageManager.getInstance().setBoolean(LocalStorageManager.PREF_IS_DEVICE_ADMIN, true);
}
@Override
public void onDisabled(Context context, Intent intent) {
super.onDisabled(context, intent);
LocalStorageManager.getInstance().setBoolean(LocalStorageManager.PREF_IS_DEVICE_ADMIN, false);
}
@Override
public void onProfileProvisioningComplete(Context context, Intent intent) {
super.onProfileProvisioningComplete(context, intent);
DevicePolicyManager manager = context.getSystemService(DevicePolicyManager.class);
ComponentName adminComponent = new ComponentName(context.getApplicationContext(), ShelterDeviceAdminReceiver.class);
// Enable the profile
manager.setProfileEnabled(adminComponent);
// Hide this app in the work profile
context.getPackageManager().setComponentEnabledSetting(
new ComponentName(context.getApplicationContext(), MainActivity.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
// Allow cross-profile intents for START_SERVICE
manager.addCrossProfileIntentFilter(
adminComponent,
new IntentFilter("net.typeblog.shelter.action.START_SERVICE"),
DevicePolicyManager.FLAG_MANAGED_CAN_ACCESS_PARENT);
}
}