Приложение администратора устройства не запрашивает
Следуя документации Android Device Device API, я сделал приложение для администратора устройства. однако, по какой-то причине я не могу понять, мой StartActivityOnResult не отображает приглашение для пользователя, чтобы включить приложение.
мой AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="corp.laouni.luxmdm">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".AdminReceiver"
android:description="@string/receiverDESC"
android:label="@string/label"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_policies"
android:resource="@xml/device_policies"/>
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/>
<action android:name="android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED"/>
<action android:name="android.app.action.DEVICE_ADMIN_DISABLED"/>
<action android:name="android.app.action.ACTION_PASSWORD_CHANGED"/>
<action android:name="android.app.action.ACTION_PASSWORD_EXPIRING"/>
<action android:name="android.app.action.ACTION_PASSWORD_FAILED"/>
<action android:name="android.app.action.ACTION_PASSWORD_SUCCEEDED"/>
</intent-filter>
</receiver>
</application>
</manifest>
MainActivity.java:
package corp.laouni.luxmdm;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
import static android.app.Activity.*;
import static corp.laouni.luxmdm.PolicyManager.PolicyActivationCode;
public class MainActivity extends Activity {
protected TextView textdisplay;
protected TextView checkdisplay;
//private PolicyManager ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//AdminActivation();
DevicePolicyManager xManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName xAdminComp =new ComponentName (this, AdminReceiver.class);
if (!xManager.isAdminActive(xAdminComp)){
//checkdisplay.setText("PASS");
Intent activateDevAdmin=new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
activateDevAdmin.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, xAdminComp);
activateDevAdmin.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"After activating admin, you will be able to block applications uninstallation");
startActivityForResult(activateDevAdmin, PolicyActivationCode);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
textdisplay = (TextView) findViewById(R.id.statusMessage);
checkdisplay = (TextView) findViewById(R.id.checkStatus);
if (resultCode == RESULT_OK){
checkdisplay.setText("Result_OK");
if (requestCode == PolicyActivationCode)
textdisplay.setText("ACTIVE");
else
super.onActivityResult(requestCode,resultCode,data);
}
else
checkdisplay.setText("Result_Not_OK");
}
}
и device_policies.xml:
<device-admin>
<uses-policies>
<limit-password/>
<watch-login/>
<reset-password/>
<force-lock/>
<wipe-data/>
<encrypted-storage/>
<expire-password/>
</uses-policies>
</device-admin>
Кстати, я запускаю приложение на эмуляторе, не уверен, что это вызовет какие-либо проблемы.