Приложение администратора устройства не запрашивает

Следуя документации 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>

Кстати, я запускаю приложение на эмуляторе, не уверен, что это вызовет какие-либо проблемы.

0 ответов

Другие вопросы по тегам