自己最近在学习Android过程中,下载了一个Demo尽然不能取消设备管理器,也不能卸载。自己猛一想这事如何实现的?

首先AndroidManifest.xml:

<receiver            android:name="com.dean.autosetting.DeviceMyReceiver"            android:description="@string/description"            android:label="@string/app_name"            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" />                <action android:name="android.intent.action.BOOT_COMPLETED" />                <category android:name="android.intent.category.HOME" />            </intent-filter>        </receiver>

DeviceMyReceiver.java

package com.dean.autosetting;import android.app.admin.DeviceAdminReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.util.Log;import android.widget.Toast;public class DeviceMyReceiver extends DeviceAdminReceiver {    @Override    public void onReceive(Context context, Intent intent) {        super.onReceive(context, intent);        // Intent i = new Intent(context, MainActivity.class);        // i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        // context.startActivity(i);        Log.e("autosetting", "receiver onReceive");    }    /**     * 获取设备存储的数值     *      * @param context     * @return     */    public static SharedPreferences getDevicePreference(Context context) {        return context.getSharedPreferences(DeviceMyReceiver.class.getName(), 0);    }    // 密码的特点    public static String PREF_PASSWORD_QUALITY = "password_quality";    // 密码的长度    public static String PREF_PASSWORD_LENGTH = "password_length";    public static String PREF_MAX_FAILED_PW = "max_failed_pw";    void showToast(Context context, CharSequence text) {        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();    }    @Override    public void onEnabled(Context context, Intent intent) {        showToast(context, "设备管理:可用");    }    @Override    public void onDisabled(Context context, Intent intent) {        showToast(context, "设备管理:不可用");    }    @Override    public CharSequence onDisableRequested(Context context, Intent intent) {        // 这里处理 不可编辑设备。        Intent intent2 = new Intent(context, NoticeSetting.class);        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        context.startActivity(intent2);        context.stopService(intent);// 是否可以停止        return ""; // "这是一个可选的消息,警告有关禁止用户的请求";    }    @Override    public void onPasswordChanged(Context context, Intent intent) {        showToast(context, "设备管理:密码己经改变");    }    @Override    public void onPasswordFailed(Context context, Intent intent) {        showToast(context, "设备管理:改变密码失败");    }    @Override    public void onPasswordSucceeded(Context context, Intent intent) {        showToast(context, "设备管理:改变密码成功");    }}

核心代码断:

@Override    public CharSequence onDisableRequested(Context context, Intent intent) {        // 这里处理 不可编辑设备。        Intent intent2 = new Intent(context, NoticeSetting.class);        intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        context.startActivity(intent2);        context.stopService(intent);// 是否可以停止        return ""; // "这是一个可选的消息,警告有关禁止用户的请求";    }

核心为 onDisableRequested方法可以做很作操作。正常情况下是取消勾选时,提示用户一句话。这里 context.stopService(intent);我把设置界面给关了。然后呢 跳转到我制定死机界面 NoticeSetting。NoticeSetting界面按键任何都不管用,只能重启。。

PS: 只是学习,不建议大家做流氓软件。本人自己也很抵触。学习之中,如果大家有问题欢迎留言,或者版本兼容问题。共同学习。 大家如果遇到这样的软件,可以用比较权威的软件卸载,如果还卸载不了,可以Root后,直接到app文件夹中删除apk文件。

更多相关文章

  1. Android(安卓)5.0 API 的变化——开发人员注意
  2. android 自定义控件(邮箱边写边出格式邮箱)
  3. Android下的Console命令
  4. onRetainNonConfigurationInstance和getLastNonConfigurationIns
  5. android中设置activity的出现方式
  6. Jetpack Compose 1.0 正式发布!打造原生 UI 的 Android(安卓)现代
  7. Android优秀开源项目收集
  8. Android实践项目汇报(二)
  9. Android编译中m、mm、mmm的区别

随机推荐

  1. Android笔记-自定义适配器
  2. 在android使用OPENGL总结
  3. Timed out Device -- Vibrator
  4. Android ApiDemos示例解析(90):OS->Senso
  5. android异步任务学习笔记
  6. 《深入理解Android(安卓)卷1》读书笔记 (
  7. 第一章 Android体系与系统架构
  8. android:EditText属性/去边框
  9. 如何通过迅雷加速下载Android SDK
  10. android activity 实现半透明Translucent