如何在Android中使我的应用程序设备管理员?

时间:2012-06-12 10:14:01

标签: android device-admin

我正在尝试让我的应用程序设备管理员,我按照同样提供的一些注意事项 Device admin SAMPLE notesTUTORIAL here 但仍然无法实施。

有些人可以指出相同的工作示例,我只需要确保卸载应用程序,用户需要输入我的应用程序中设置的密码。

任何帮助都会有用,提前致谢

4 个答案:

答案 0 :(得分:8)

  

我只需要确保卸载应用程序,用户需要输入我的应用程序中设置的密码。

幸运的是,这不适用于SDK应用程序。即使设备管理员应用也无法阻止用户卸载它。

答案 1 :(得分:3)

我找到了示例教程here。我希望它会对你有所帮助。

警告 ::::如果您点击“重置设备”,您的设备将因出厂设置重置

devicePolicyManager.wipeData(ACTIVATION_REQUEST);

答案 2 :(得分:1)

是可以制作这样一个可以在卸载前获取密码的应用程序。从google Play安装此应用程序"Findroid"具有此功能的应用程序。在这个应用程序中,您首先需要解锁您的应用程序,然后才能卸载它。

答案 3 :(得分:0)

您无法以编程方式激活它,但您可以要求用户在运行时启用它 这是完整的解决方案

 var devicePolicyManager: DevicePolicyManager? = null
    var deviceAdmin: ComponentName? = null

在需要的地方在 oncreate 中调用此方法

//调用该方法检查是否开启

checkAndTakeUserToEnableEnableAdminApp()



private fun checkAndTakeUserToEnableEnableAdminApp() {
        devicePolicyManager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
        deviceAdmin = ComponentName(this, DeviceAdminReceiverClass::class.java)
        if (devicePolicyManager!!.isAdminActive(deviceAdmin!!)) {
        //do whatever is needed here is its active
        } else {
            showDeviceAdminPopup(this)
        }

    }

哪里DeviceAdminReceiverClass

import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;



/**
 * This is the component that is responsible for actual device administration.
 * It becomes the receiver when a policy is applied. It is important that we
 * subclass DeviceAdminReceiverClass class here and to implement its only required
 * method onEnabled().
 */
public class DeviceAdminReceiverClass extends DeviceAdminReceiver {
    static final String TAG = "DeviceAdminReceiverClass";

    /** Called when this application is approved to be a device administrator. */
    @Override
    public void onEnabled(Context context, Intent intent) {
        super.onEnabled(context, intent);
        Toast.makeText(context, "Device admin is enabled",
                Toast.LENGTH_LONG).show();
        Log.d(TAG, "onEnabled");
    }

    /** Called when this application is no longer the device administrator. */
    @Override
    public void onDisabled(Context context, Intent intent) {
        super.onDisabled(context, intent);
        Toast.makeText(context, "Device admin is disabled",
                Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDisabled");
    }

    @Override
    public void onPasswordChanged(Context context, Intent intent) {
        super.onPasswordChanged(context, intent);
        Log.d(TAG, "onPasswordChanged");
    }

    @Override
    public void onPasswordFailed(Context context, Intent intent) {
        super.onPasswordFailed(context, intent);
        Log.d(TAG, "onPasswordFailed");
    }

    @Override
    public void onPasswordSucceeded(Context context, Intent intent) {
        super.onPasswordSucceeded(context, intent);
        Log.d(TAG, "onPasswordSucceeded");
    }

}

清单

<receiver
            android:name=".DeviceAdminReceiverClass"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <intent-filter>

                <!-- This action is required -->
                <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
            </intent-filter>

            <!-- This is required this receiver to become device admin component. -->
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin" />
        </receiver>

@xml/device_admin

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
     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.
-->
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"
    android:visible="false">
    <uses-policies>
        <watch-login />
        <force-lock />
    </uses-policies>
</device-admin>