dispositif erreurs d'administration de la politique avec Android
-
13-10-2019 - |
Question
J'ai récemment commencé à explorer les API d'administration des politiques de périphériques Android et se sont heurtées un peu d'un mur. Je vais avoir des problèmes permettant simplement l'administration de l'appareil. Je suis assez certain qu'il ya un problème avec l'entrée manifeste, mais je ne peux pas mettre le doigt sur tout le domaine du problème.
entrée Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0">
<application android:label="DeviceAdminTrial" android:icon="@drawable/icon" android:debuggable="true">
<activity android:name=".MyActivity"
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=".Receiver"
android:label="device_admin"
android:permission="android.permission.BIND_DEVICE_ADMIN"/>
<meta-data android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
</intent-filter>
</application>
</manifest>
Message d'erreur:
12-25 15:42:38.930: WARN/DeviceAdminAdd(394): Unable to retrieve device policy ComponentInfo{com.example/com.example.Receiver}
org.xmlpull.v1.XmlPullParserException: No android.app.device_admin meta-data
device_admin.xml
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>
Activation Méthode:
enable = (Button)findViewById(R.id.button);
enable.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent (DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, receiver);
startActivityForResult(intent, 1);//1 is enabled, 0 is disabled.
output.setText(""+policymanager.isAdminActive(receiver));
}
});
Et la classe de récepteur est aussi simple que l'échantillon trouvé ici: http://developer.android .com / ressources / samples / ApiDemos / src / com / example / android / apis / app / DeviceAdminSample.html
toute aide ou des conseils serait très apprécié.
La solution
manifeste:
<receiver android:name=".Receiver"
android:label="device_admin"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
android:resource="@xml/device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
Autres conseils
J'ai eu le même problème. signature de la classe MyAdmin doit être public static
public static class MyAdmin extends DeviceAdminReceiver {
}