Propietario de dispositivo en un dispositivo no conectado (Android L), sin NFC, con shell de adb, dpm set-device-owner

La intención final aquí es tener un dispositivo en 'kiosk mod'.

Dicen que no necesita NFC ni enraizamiento para lograr que la aplicación se convierta en propietario de dispositivo . Todavía tengo que ver un ejemplo completo de este método, pero vamos a intentarlo:

adb shell dpm set-device-owner <package>/.<ReceiverImplementation> 

Debe hacer … Así que lo hago, y obtener:

 java.lang.SecurityException: Neither user 2000 nor current process has android.permission.BIND_DEVICE_ADMIN. 

El código siguiente, por lo tanto, devuelve false.

 ((DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE)) .isDeviceOwnerApp(getApplicationContext().getPackageName()) 

Esta pregunta STO plantea una pregunta similar, pero no especifica un fracaso real.

Archivo de manifiesto y el resto de la fuente se inspira en su mayoría de esta muestra de google

 <manifest package="com.example.android.deviceowner" xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0"> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <receiver android:name=".DeviceOwnerReceiver" 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_owner_receiver"/> <intent-filter> <action android:name="android.app.action.ACTION_DEVICE_ADMIN_ENABLED"/> </intent-filter> </receiver> </application> </manifest> 

Dispositivo que estoy tratando de hacer esto en la actualidad es LG G Pad.

2 Solutions collect form web for “Propietario de dispositivo en un dispositivo no conectado (Android L), sin NFC, con shell de adb, dpm set-device-owner”

Su archivo de manifiesto parece correcto. Debe tener en cuenta que puede venir del estado de su sistema cuando está ejecutando este comando. Se deben comprobar muchos puntos antes de ejecutar correctamente el comando dpm :

  • Asegúrate de que tu aplicación ya esté instalada, como cualquier otra aplicación informal.
  • Asegúrese de que no hay ninguna cuenta establecida para el usuario actual (asegúrese de que no hay ninguna cuenta configurada en Configuración> Cuentas) antes de su uso.
  • No debería haber un propietario de dispositivo ya registrado

La mejor cosa que hacer (Eso es lo que hice al experimentar de hecho) es completamente de fábrica-reiniciar el teléfono y evitar la mayoría de los pasos de configuración (excepto los mandatorios pasos "configurar Wi-Fi" y "Nombre"), y no asociar ninguna Cuenta de Google .
Una vez provisto, usted está seguro de estar en un estado limpio. Entonces,

  1. Activar depuración
  2. Instale su aplicación con su IDE (o con pm install …)
  3. Ejecute el comando adb shell dpm set-device-owner ...

He escrito un artículo explicando la mayoría de estos pasos en mi blog , eche un vistazo a él, puede ser útil en su caso.

No estoy seguro de si esto va a ayudar, pero si no, tal vez alguien más va a utilizar esta solución. Tuve un problema muy similar con Samsung Tab A. No pude establecer la propiedad de mi aplicación. Siempre mientras se ejecuta:

 adb shell dpm set-device-owner cy.com.myapp/.AdminReceiver 

Estuve obteniendo:

 java.lang.SecurityException: Neither user 2000 nor current process has com.sec.enterprise.permission.MDM_PROXY_ADMIN_INTERNAL. 

Después de una larga búsqueda finalmente encontré que necesitaba agregar a mis permisos de manifiesto permisos especiales de Samsung:

 <uses-permission android:name="com.samsung.accessory.permission.ACCESSORY_FRAMEWORK" /> 

Eso hizo el truco y ahora mi aplicación puede ir al modo quiosco a la demanda. Es posible que esté buscando un problema similar – quizás haya uno o más ajustes de permiso que usted necesita para configurar para su LG. Mi solución funcionó para un dispositivo no enraizado (y, obviamente, sin ninguna cuenta agregada – fresco después de restablecimiento de fábrica).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.