开发板环境下在Android应用程序中调用需要root权限的脚本命令的一种方法

Xilinx Zynq-7000 zc702开发板环境下,找到官方的Android SD卡文件(Android2.3),已经能够在开发板上运行Android,希望写一个应用程序调用一个重构FPGA的脚本命令,尝试了很多天都失败了,最后查找资料做了很多实验终于成功了,代码片段如下:

        try{
        	
        Process suProcess = Runtime.getRuntime().exec("/system/xbin/su");
        DataOutputStream dos = new DataOutputStream(suProcess.getOutputStream());
       dos.writeBytes("ls > /data/local/d\n");
       dos.flush();
        dos.writeBytes("cat /system/Zynq_RealFFT_wrapper.bin > /tmp/dev1/xdevcfg\n");
        dos.flush();
        dos.close();
        suProcess.waitFor();
     } catch (Exception e) {
        // Please do something, don't let Exceptions be raised and silently trapped.
    	 e.printStackTrace();
     }

原理就是通过执行su获得root权限,通过DataOutPutStream向su启动的shell里用writeBytes写入要执行的命令。在stackoverflow上找到的

另外,需要注释掉su.c中的以下代码片段:

if (myuid != AID_ROOT && myuid != AID_SHELL) {
        fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
        return 1;
    }

这样执行su的时候即使是即使真实用户id是普通用户也能继续执行。

除此之外,还必须把su可执行文件    sudo chmod a+s su    ,这样有效用户id会暂时为0,也就是root。

说实话,关于Android权限不太懂,有个文章总结的还将就,可以学习一下;

http://blog.csdn.net/superkris/article/details/7709504/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值