Android 防卸载实现代码。
来源:互联网 发布:智能男友聊天软件 编辑:程序博客网 时间:2024/06/06 02:22
实现防卸载首先需要激活设备管理器。激活 设备管理器后应用将无法正常卸载,取消激活后可即可正常卸载。
所以我们要禁止用户取消激活。
激活设备管理器请参考:http://www.oschina.net/question/54100_29057
由于app注册了android.app.action.DEVICE_ADMIN_ENABLED的广播接受,所以当用户将要点击取消激活时系统会调用app中注册android.app.action.DEVICE_ADMIN_ENABLED实现类中的onDisableRequested方法。
我们可以在应用的onDisableRequested方法中添加以下代码阻止用户取消激活:
1、通过锁屏方式
@Override
- public CharSequence onDisableRequested(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Intent intent1 = context.getPackageManager().getLaunchIntentForPackage("com.android.settings" );
- intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent1);
- final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
- dpm.lockNow();
- new Thread( new Runnable() {
- @Override
- public void run() {
- int i = 0 ;
- while (i< 70 ){
- dpm.lockNow();
- try {
- Thread.sleep( 100 );
- i++;
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }).start();
- return "This is a onDisableRequested response message" ;
- }
2 、通过阻塞函数返回方式
- @Override
- public CharSequence onDisableRequested(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Intent intent1 = context.getPackageManager().getLaunchIntentForPackage("com.android.settings" );
- intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent1);
- try {
- Thread.sleep( 7000 );
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- return "This is a onDisableRequested response message" ;
- }
3 、通过透明窗口劫持方式
- @Override
- public CharSequence onDisableRequested(Context context, Intent intent) {
- // TODO Auto-generated method stub
- Intent intent1 = context.getPackageManager().getLaunchIntentForPackage("com.android.settings" );
- intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(intent1);
- WindowManager.LayoutParams wmParams;
- final WindowManager mWindowManager;
- wmParams = new WindowManager.LayoutParams();
- mWindowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
- wmParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- wmParams.format = PixelFormat.RGBX_8888;
- wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
- wmParams.gravity = Gravity.LEFT | Gravity.TOP;
- wmParams.alpha = 0 ;
- wmParams.x = 0 ;
- wmParams.y = 0 ;
- wmParams.width = WindowManager.LayoutParams.MATCH_PARENT;
- wmParams.height = WindowManager.LayoutParams.MATCH_PARENT;
- final View contentView = new Button(context);
- mWindowManager.addView(contentView, wmParams);
- new Thread( new Runnable() {
- @Override
- public void run() {
- try {
- Thread.sleep( 7000 );
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- mWindowManager.removeView(contentView);
- }
- }).start();
- return "This is a onDisableRequested response message" ;
- }
1 0
- Android 防卸载实现代码。
- Android代码实现安装、卸载、打开
- android高版本5.0以上防卸载
- android 软件卸载 代码
- Android代码实现APK文件的安装与卸载
- ANDROID代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- Android 实现用代码安装和卸载APK
- ANDROID代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- Android代码实现APK文件的安装与卸载
- ANDROID代码实现APK文件的安装与卸载
- ANDROID代码实现APK文件的安装与卸载
- ANDROID代码实现APK文件的安装与卸载
- ANDROID代码实现APK文件的安装与卸载
- ecshop 后台 空白的调试
- Unity3d 引擎原理详细介绍
- Redis 菜鸟笔记(一) 环境搭建
- 观察者模式
- eclipse 异常 Subversion Native Library Not Available解决方案
- Android 防卸载实现代码。
- Unity基本原理
- Java 初始化过程
- uva10529 概率dp+区间dp
- putty下载文件
- 技术如何提升从头反思
- Install Simplescalar 3.0 on Ubuntu 12.04
- 数据表示及溢出
- 配置文件越来越大原来是自动转移惹的祸~