Android获取超级管理员权限的实现
时间:2022-07-27
本文章向大家介绍Android获取超级管理员权限的实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.定义特殊的广播接收者,系统超级管理员的广播接收者
public class MyDeviceAdminReceiver extends DeviceAdminReceiver{
@Override
public void onReceive(Context context,Intent intent){
//TODO
}
}
2.在AndroidManifest.xml文件中,注册超级管理员的广播接收者
<receiver
android:name="com.example.receiver.MyDeviceAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN"
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_sample"/
<intent-filter
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/
</intent-filter
</receiver
3.在res/xml中创建策略声明xml
<device-admin xmlns:android="http://schemas.android.com/apk/res/android"
<uses-policies
<force-lock/ <!--强制锁屏--
<wipe-data/ <!--清除数据--
<reset-password/ <!--重置密码--
...
</uses-policies
补充知识:Android通过代码获取ROOT权限
获取Android的ROOT权限其实很简单,只要在Runtime下执行命令”su”就可以了。
首先我们需要检测是否已经有root权限,判断代码如下:
// 判断是否具有ROOT权限
public static boolean is_root(){
boolean res = false;
try{
if ((!new File("/system/bin/su").exists()) &&
(!new File("/system/xbin/su").exists())){
res = false;
}
else {
res = true;
};
}
catch (Exception e) {
}
return res;
}
然后我们执行获取root权限的代码
// 获取ROOT权限
public void get_root(){
if (is_root()){
Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show();
}
else{
try{
progress_dialog = ProgressDialog.show(mCtx,
"ROOT", "正在获取ROOT权限...", true, false);
Runtime.getRuntime().exec("su");
}
catch (Exception e){
Toast.makeText(mCtx, "获取ROOT权限时出错!", Toast.LENGTH_LONG).show();
}
}
}
以上这篇Android获取超级管理员权限的实现就是小编分享给大家的全部内容了,希望能给大家一个参考。
- ifconfig: command not found CentOS专版,其他的可以参考
- Codeforces 833E Caramel Clouds
- Codeforces 833D Red-black Cobweb【树分治】
- Codeforces 834E The Bakery【枚举+数位dp】
- 【Java学习笔记之一】java关键字及作用
- 如何让所有实体类用相同名称的主键(很有力的问题,比如所有表实体主键都用ID)
- Codeforces 834D The Bakery【dp+线段树维护+lazy】
- memcached安装及.NET中的Memcached.ClientLibrary使用详解
- AtCoder Beginner Contest 069【A,水,B,水,C,数学,D,暴力】
- 2017"百度之星"程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】
- 洛谷 2634&&BZOJ 2152: 聪聪可可【点分治学习+超详细注释】
- 【经验总结】Java在ACM算法竞赛编程中易错点
- 【Java学习笔记之六】java三种循环(for,while,do......while)的使用方法及区别
- 类A是公共的,应在名为A.java的文件中声明错误
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- mybatis动态sql之foreach补充(三)
- mybatis动态sql之使用foreach进行批量插入的两种方式
- Shiro异常java.lang.IllegalArgumentException: Odd number of characters解决方案
- Greenplum快速上手
- mybatis文件映射之利用association进行关联查询之分步查询(三)
- 操作系统实验之多线程操作之读者优先与写者优先第二版
- Transformers Assemble(PART II)
- 剑指offer(04-06)题解
- 剑指offer(10-12)题解
- mybatis动态sql之bind标签
- mybatis映射文件之基本的增删改查
- mybatis动态sql之利用sql标签抽取可重用的sql片段
- springmvc之配置拦截器拦截相应的请求
- 剑指offer(31-40)题解
- mybatis缓存之二级缓存