Por qué el flag isLockTaskPermitted es falso

Estoy tratando de pin pantalla de forma programática en Android L. Mi aplicación incluye archivo xml con

<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <force-lock/> <watch-login/> <disable-camera/> <disable-keyguard-features/> <encrypted-storage/> <expire-password/> <limit-password/> <reset-password/> <set-global-proxy/> <wipe-data/> </uses-policies> </device-admin> 

He instalado la aplicación con las líneas adecuadas en el archivo AndroidManifest donde se define AdminReceiver. Todo funcionó bien hace unas semanas, pero ahora mismo cuando volví a este proyecto – App me pide que confirme "Pin pantalla" popup cada vez que se inicia la aplicación.

Cuando estoy depurando me di cuenta de comportamiento extraño devicePolicyManager.isAdminActive(componentName) es true devicePolicyManager.isDeviceOwnerApp(getPackageName()) es cierto

pero

devicePolicyManager.isLockTaskPermitted(getPackageName()) es falso

No importa si configuro la aplicación como propietario de dispositivo usando adb comend dpm set-device-owner ... o empujando el archivo device_owner.xml a / data / system /

Mi pregunta es ¿por qué la aplicación no tiene permiso para bloquear la pantalla?

Para eso debe llamar a setLockTaskPackages ()

Usted código debe algo como a continuación.

Su actividad debe tener

 ComponentName mAdminComponentName = DeviceAdminReceiver.getComponentName(this); //where this will be your Activity DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); mDevicePolicyManager.setLockTaskPackages(mAdminComponentName,new String[]{getPackageName()}); 

DeviceAdminReceiver.java

 // Copyright 2016 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.codelabs.cosu; /** * Created by nyfuchs on 4/26/16. */ import android.content.ComponentName; import android.content.Context; /** * Handles events related to the managed profile. */ public class DeviceAdminReceiver extends android.app.admin.DeviceAdminReceiver { private static final String TAG = "DeviceAdminReceiver"; /** * @param context The context of the application. * @return The component name of this component in the given context. */ public static ComponentName getComponentName(Context context) { return new ComponentName(context.getApplicationContext(), DeviceAdminReceiver.class); } } 

AndroidManifest.xml

  <receiver android:name="com.google.codelabs.cosu.DeviceAdminReceiver" android:description="@string/app_name" android:label="@string/app_name" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin_receiver" /> <intent-filter> <action android:name="android.intent.action.DEVICE_ADMIN_ENABLED"/> <action android:name="android.intent.action.PROFILE_PROVISIONING_COMPLETE"/> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> 
  • PreferenceScreen - <intention ... /> - Excepción - FLAG_ACTIVITY_NEW_TASK
  • La barra de herramientas no se oculta mientras se desplaza
  • Barra de herramientas y Fragmento
  • Android cómo hacer que resalte la vista cuando se hace clic?
  • ¿Hay una manera de mostrar los números primero en el teclado virtual para Android?
  • Pantalla Android Parpadea en mostrar / ocultar barras del sistema
  • ¿Alternativas para DOM API en Android?
  • Base de datos de Android más rápida
  • Cómo establecer recurso de imagen a ImageView utilizando DataBinding
  • Cómo inflar RelativeLayout de XML
  • ¿Cómo ocultar por programación algunos elementos de la vista, pero no todos, en una salida XML?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.