`
iaiai
  • 浏览: 2196764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android 判断Root的方法

 
阅读更多
方法一:(不弹框)
    private final static int kSystemRootStateUnknow = -1;  
    private final static int kSystemRootStateDisable = 0;  
    private final static int kSystemRootStateEnable = 1;  
    private static int systemRootState = kSystemRootStateUnknow; 

public static boolean isRootSystem() {  
        if (systemRootState == kSystemRootStateEnable) {  
            return true;  
        } else if (systemRootState == kSystemRootStateDisable) {  
            return false;  
        }  
        File f = null;  
        final String kSuSearchPaths[] = { "/system/bin/", "/system/xbin/",  
                "/system/sbin/", "/sbin/", "/vendor/bin/" };  
        try {  
            for (int i = 0; i < kSuSearchPaths.length; i++) {  
                f = new File(kSuSearchPaths[i] + "su");  
                if (f != null && f.exists()) {  
                    systemRootState = kSystemRootStateEnable;  
                    return true;  
                }  
            }  
        } catch (Exception e) {  
        }  
        systemRootState = kSystemRootStateDisable;  
        return false;  
    }


方法二:(会弹框)
public synchronized boolean getRootAhth()    
{    
    Process process = null;    
    DataOutputStream os = null;    
    try    
    {    
        process = Runtime.getRuntime().exec("su");    
        os = new DataOutputStream(process.getOutputStream());    
        os.writeBytes("exit\n");    
        os.flush();    
        int exitValue = process.waitFor();    
        if (exitValue == 0)    
        {    
            return true;    
        } else    
        {    
            return false;    
        }    
    } catch (Exception e)    
    {    
        Log.d("*** DEBUG ***", "Unexpected error - Here is what I know: "    
                + e.getMessage());    
        return false;    
    } finally    
    {    
        try    
        {    
            if (os != null)    
            {    
                os.close();    
            }    
            process.destroy();    
        } catch (Exception e)    
        {    
            e.printStackTrace();    
        }    
    }    
}


方法三:(会弹框)
//判断机器 Android是否已经root,即是否获取root权限     
  protected static boolean haveRoot()    
  {    
    int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测     
    if (i != -1)  return true;    
    retrun false;    
  }
分享到:
评论

相关推荐

    Android检查设备是否root的方法

    Android开发中有时需要判断手机是否已经root,这个类就是全面检查Android设备是否root的工具类,Android开发中有时需要判断手机是否已经root,这个类就是全面检查Android设备是否root的工具类,Android开发中有时...

    android Root 判断工具

    android Root 判断工具 ,很多接口可以使用,快速开发root使用

    android手机root检测

    4. **使用API检测**:Android提供了安全管理相关的API,开发者可以通过`getDevicePolicyManager().isDeviceOwnerApp()`等方法检测设备是否被root。 5. **检测隐藏的系统应用**:root用户可以隐藏系统应用,非root...

    Android例子源码不弹框手机是否Root检测例子.zip

    Android可以直接运行一个底层命令,来判断是否root,但是这会带来一个问题,每次判断是否root都会弹出一个root请求框。这是十分不友好的一种交互方式,而且,用户如果选择取消,有部分手机是判断为非root的。这种方式...

    Android应用程序请求root权限代码

    - **root权限的替代方案**:对于一些不需要root权限就能实现的功能,开发者可以考虑使用Android系统内置的安全机制或其他替代方法来避免使用root权限。 通过以上分析,我们可以看出请求root权限是一个复杂且敏感的...

    Root_java_rootcheck_ROOT_

    然而,对于开发者来说,判断一个Android设备是否已被root,是非常重要的,因为这关系到应用的安全性和兼容性。本源码提供了一种方法来检查设备是否已被root。 在Java中,检查Android设备是否被root通常涉及以下几个...

    Android系统Root权限获取与检测.pdf

    常见的Root方法包括利用系统漏洞、使用第三方Root工具(如SuperSU、Magisk等)以及通过刷入自定义Recovery(如TWRP)然后安装Root包。这些方法通常需要一定的技术知识,且可能违反设备制造商的保修政策。 对于...

    Android例子源码不弹框手机是否Root检测例子

    现在,我们来看判断Android手机是否已Root的三种方法: 1. **检查已知Root应用是否存在**:这种方法简单直接,通过查找已知的Root管理应用(如SuperSU、Magisk等)的系统文件或服务来判断。例如,可以检查/system/...

    Android获取ROOT权限的实例代码

    在Android中,可以使用`Runtime.getRuntime().exec()` 方法来执行shell命令。下面是一个示例: ```java public void get_root() { if (is_root()) { Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_...

    Android无需root实现apk的静默安装

    在`runInstall`方法中,可以看到一系列的条件判断,用于处理不同的安装选项,如`-l`表示使用前向锁定模式,`-r`表示替换已存在的应用,`-i`指定安装者包名,`-t`允许测试包,`-s`和`-f`分别表示安装到外部存储和内部...

    java_android_判断手机是否具有root权限工具类的标准代码

    判断手机是否具有root权限工具类的标准代码

    检测手机是否Root源码.zip

    Android可以直接运行一个底层命令,来判断是否root,但是这会带来一个问题,每次判断是否root都会弹出一个root请求框。这是十分不友好的一种交互方式,而且,用户如果选择取消,有部分手机是判断为非root的。这种方式...

    android系统判断快捷方式是否存在

    ### Android系统判断快捷方式是否存在 #### 背景与需求 在Android开发中,有时候我们需要检测用户是否已经为应用程序创建了桌面快捷方式。这在某些应用场景下是非常有用的,比如为了提高用户体验,当检测到未创建...

    androidRoot大全.pdf

    5. android.permission.ACCESS_NETWORK_STATE:应用需要此权限来获取网络连接状态,如Wi-Fi、移动数据等,以判断是否可以进行网络操作。 6. android.permission.ACCESS_SURFACE_FLINGER:提供对SurfaceFlinger底层...

    检测手机是否root

    通过尝试运行SU命令并捕获返回结果,可以判断设备是否已root。如果能够成功执行并返回0(表示成功),则表明设备已被root。 2. **检查系统文件完整性**: - 在未root的设备上,系统文件如/system/app、/system/...

    安卓2.3系统ROOT

    2. **查找合适的Root工具**:针对不同的设备型号,有不同的Root方法。例如,常见的有SuperSU、 towelroot 或 Odin 等工具。在本例中,文件名为"Root2.34"可能是一个特定的Root工具或者固件更新包,具体用途需根据...

    Android手机无法连接WIFI等问题的6种解决方案

    四、Android手机未ROOT方法(方法一) 1. 使用网络修复工具,如WiFi Fixer,它可以帮助检测和修复WiFi连接问题。 2. 尝试连接其他WiFi网络,判断是否为手机硬件或软件问题。 3. 检查手机的日期和时间设置,确保与当前...

    android还原短信、开机启动、dp和xp转换、root下禁用组件等

    android中常用的功能抽取出来的Demo.android dp和px之间转换,android root下禁用组件,android 还原短信,android 开机启动,android 判断网络状态,android 设置apn,android 调节屏幕亮度,android 重启,异步...

    android 监听软键盘状态(弹起还是收起)

    屏幕旋转会导致布局高度改变,我们需要在`onConfigurationChanged()`方法中更新`rootHeight`,以确保在不同方向下都能正确判断键盘状态。 ```java @Override public void onConfigurationChanged(Configuration ...

    Android例子源码仿UC网络判断及开启或关闭网络

    - `Android例子源码仿UC网络判断及开启或关闭网络`可能包含以下几个关键部分:初始化`ConnectivityManager`,创建和注册`BroadcastReceiver`,处理网络状态变化的逻辑,以及根据用户操作尝试开启或关闭网络的代码。...

Global site tag (gtag.js) - Google Analytics