吐槽 Android 权限管理

前言

笔者最近在工作中遇到了关于 Android 的权限管理的问题,在搜索资料的时候发现关于 Android 如何获取 Android 系统权限或者 root 权限的资料少之又少,而且千篇一律。我这只小白真真切切的感受到了失望和无助。写下这篇文章主要是为了抛砖引玉。希望有大牛能来抚慰我受伤的心灵。

普通权限

对于 Android 中普通的权限我们只需要在 AndroidManifest.xml 中的 manifest 节点下进行声明就可了。比如网络权限,只需要在 AndroidManifest 中添加如下内容即可。

<uses-permission android:name="android.permission.INTERNET" />

[Android] Android 6.0 的权限管理变化 这篇文章中作者介绍了 Android 6.0 的权限管理变化。

root 权限

如何使自己的应用获取 root 权限,是笔者问题的症结所在。笔者尝试的方法只要有:

  • 破解手机
  • 打 Android 平台的签名包

破解手机获取 root 权限

这种方法需要用户自行破解手机才能生效。确定破解手机后执行如下代码启动一个在 root 账户中运行的进程。然后在此进程中执行要实现的功能。

    /** 
     * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限) 
     *  
     * @return 应用程序是/否获取Root权限 
     */  
    public static boolean upgradeRootPermission(String pkgCodePath,String commendLine) {  
      Process process = null;  
      DataOutputStream os = null;  
      try {  
        String cmd="chmod 777 " + pkgCodePath;  
        process = Runtime.getRuntime().exec("su"); //切换到root帐号  
        os = new DataOutputStream(process.getOutputStream());  
        os.writeBytes(cmd + "\n");  
        os.writeBytes(commendLine+"\n");  
        os.flush();  
        process.waitFor();  
      } catch (Exception e) {  
        return false;  
      } finally {  
        try {  
          if (os != null) {  
            os.close();  
          }  
          process.destroy();  
        } catch (Exception e) {  
      }  
    }  
      return true;  
    }  

上述代码中 commendLine 是需要在 root 账户中执行的操作。这种方法只适合执行一些简单的 shell 命令或者简单的程序。比如关机或者重启。但是你的应用依然没有 root权限。

打 Android 平台的签名包获取系统权限

这种方法其实就是把自己的应用提升到系统应用的级别,从而使应用获取系统权限。Android 系统权限和 root 权限这篇文章中具体介绍了如何使应用获取系统权限和 root 权限。对于文中介绍的怎样使 Android APK 获取 system 权限笔者不在重复介绍。因为笔者尝试过,然而并没有什么卵用。而网上几乎所有的资料都是这么介绍的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值