【Android】【root & remount 】【1】java中如何判断设备是否在root状态

这篇具有很好参考价值的文章主要介绍了【Android】【root & remount 】【1】java中如何判断设备是否在root状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

客户需求,需要判断设备是否执在root状态。可以理解为是否执行了adb root 设置root状态,已经adb unroot设置unroot状态。

代码分析

分析adb deamon发现:在执行adb root 、adb unroot指令时,系统会更新service.adb.root 变量。

void restart_root_service(unique_fd fd) {
    if (getuid() == 0) {
        WriteFdExactly(fd.get(), "adbd is already running as root\n");
        return;
    }
    if (!__android_log_is_debuggable()) {
        WriteFdExactly(fd.get(), "adbd cannot run as root in production builds\n");
        return;
    }

    LOG(INFO) << "adbd restarting as root";
    android::base::SetProperty("service.adb.root", "1");
    WriteFdExactly(fd.get(), "restarting adbd as root\n");
}

void restart_unroot_service(unique_fd fd) {
    if (getuid() != 0) {
        WriteFdExactly(fd.get(), "adbd not running as root\n");
        return;
    }

    LOG(INFO) << "adbd restarting as nonroot";
    android::base::SetProperty("service.adb.root", "0");
    WriteFdExactly(fd.get(), "restarting adbd as non root\n");
}

实现

系统应用可以通过SystemProperties get ”service.adb.root“ value来判断是否root。文章来源地址https://www.toymoban.com/news/detail-853713.html

public static final String ADB_ROOT_PROP = "service.adb.root";

public static boolean deviceIsRooted(){
return SystemProperties.getInt(ADB_ROOT_PROP,0) == 1 ? true:false;
}

到了这里,关于【Android】【root & remount 】【1】java中如何判断设备是否在root状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [SM6225][Android13]user版本默认允许root和remount

    芯片:  高通SM6225 版本:  Android 13 kernel:  msm-5.15        刚刚从Framework踏入性能的小殿堂,User版本默认是不会开启root权限的,而且一般调试需要设置一下CPU GPU DDR performance模式或者修改一些schedule util等调核调频节点去对比复测,userdebug版本的话本身整机性能就比user卡很多,

    2024年02月09日
    浏览(42)
  • 如何判断Android的Service是否已启动或已绑定

    此内容基于CharGPT生成 要判断一个 Android Service 是否已经启动或已绑定,可以使用以下方法: 启动状态判断: 可以使用 ActivityManager 类中的 getRunningServices() 方法,该方法返回一个 ListActivityManager.RunningServiceInfo 对象,包含当前正在运行的所有服务的信息。然后可以遍历这个列表

    2024年02月07日
    浏览(37)
  • 如何检查 Android 设备是否支持 Widevine DRM

    想知道您的 Android 设备是否可以流式传输来自 Netflix 和 Amazon Prime Video 的高清视频?这是检查 Widevine DRM 支持的方法! 许多流媒体服务,如 Netflix、Disney+、Hulu 等,使用各种类型的数字版权管理 (DRM) 来保护其内容不被复制和重新分发。大多数 DRM 实际上并没有阻止这种行为,而

    2024年02月14日
    浏览(43)
  • Java中如何判断是否为闰年

    ✨ 博主: 命运之光 ✨ 专栏: Java经典程序设计   目录 ✨介绍 🍓引言:闰年的定义和在编程中的应用 🍓目的:介绍如何使用Java编写一个函数来判断年份是否为闰年 ✨闰年的条件 ✨提供数学原理和背景知识 🍓判断是否为闰年的Java代码 ✨示例和测试 ✨总结 前言: Java中

    2024年02月02日
    浏览(37)
  • Java如何判断某文件目录是否存在

    在java中如何判断某文件所在的目录是否存在,若不存在创建目录 可以通过国使用 File 类的 getParentFile() 方法来获取文件所在的目录,并通过 exists() 方法来判断该目录是否存在,若不存在,通过 mkdirs() 方法创建目录,以下为实例 或直接简写

    2024年02月12日
    浏览(46)
  • Java如何优雅地判断对象是否为空

    点击下载《Java如何优雅地判断对象是否为空》 在实际项目中,我们经常需要对各种变量或对象进行判空校验。这是因为,如果不进行判空校验,当遇到空值时,可能会导致程序出现NullPointerException异常。这是一种常见的运行时异常,它会在试图访问或操作空对象引用时发生。

    2024年04月28日
    浏览(49)
  • java中如何判断map是否为空

    java中判断map是否为空的方法是:利用isEmpty()函数来判断。 isEmpty()是Java中用于判断某种容器是否有元素的系统库函数。如用来判断ArrayList,HashSet,HashMap是否有元素等。 在Java中,可以用isEmpty();判断一个顺序容器ArrayList里面是否有元素,如果有的话返回一个Boolean类型的值fal

    2024年02月16日
    浏览(95)
  • Cypress 做 e2e 测试,如何在获得某个 checkbox 后先判断它是否被 check 然后再更改它的状态?

    比如如果这个 checkbox 已经被 check 了,就不做操作,否则将它 check。 我们假设这个 checkbox 的 data-testid 属性是 VendorCodeCheckbox-0-test-id 。Cypress 的代码如下: 注意,对于不同的前端框架,寻找组件的逻辑可能不同。

    2024年02月11日
    浏览(34)
  • Android 是否可支持 exFAT 格式 U 盘?如何使 Android 设备支持 exFAT

    Android 是否可支持 exFAT 格式 U 盘?如何使 Android 设备支持 exFAT exFAT 文件系统是一种适用于移动设备和嵌入式系统的文件系统,它具有更好的兼容性和更高的性能。然而,并非所有的 Android 设备都原生支持 exFAT 格式的 U 盘。在本文中,我将介绍如何使 Android 设备支持 exFAT 格式

    2024年02月08日
    浏览(41)
  • 【在Java中如何判断元素是否在集合中】

    在Java编程中,集合是非常常见的数据结构之一。在处理集合数据时,经常需要判断某个元素是否在集合中。本文将介绍在Java中如何判断元素是否在集合中,以及常用的方法和技巧。 在Java中,判断元素是否在集合中通常使用以下两种方式: 使用contains()方法 使用containsAll()方

    2024年01月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包