android 读取系统文件 wpa_supplicant

本文介绍了如何在Android设备上读取wpa_supplicant系统文件,包括需要获取特定权限,使用RootTools.jar包,执行shell命令行操作,以及调用关键方法的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,需要权限

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

2,下载 RootTools.jar包。

3,两个关键方法。主要是获取shell,并执行命令行。

方法如下:

  private static boolean waitForCommand(Command cmd) {
        while (!cmd.isFinished()) {
            synchronized (cmd) {
                try {
                    if (!cmd.isFinished()) {
                        cmd.wait(2000);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            if (!cmd.isExecuting() && !cmd.isFinished()) {
                //         Logger.errorST("Error: Command is not executing and is not finished!");
                return false;
            }
        }

        //Logger.debug("Command Finished!");
        return true;
    }
    public static ArrayList<String> runAndWait1(String cmd, final boolean root) {
        final ArrayList<String> output = new ArrayList<String>();
        Command cc = new Command(1, cmd) {
            @Override
            public void commandOutput(int i, String s) {
                output.add(s);
//        System.out.println("output "+root+s);
            }

            @Override
            public void commandTerminated(int i, String s) {

                System.out.println("error" + root + s);

            }

            @Override
            public void commandCompleted(int i, int i2) {

            }
        };
        try {
            RootTools.getShell(root).add(cc);
        } catch (Exception e) {
            //       Logger.errorST("Exception when trying to run shell command", e);
            e.printStackTrace();
            return null;
        }

        if (!waitForCommand(cc)) {
            return null;
        }

        return output;
    }


4,接下来就是简单的调用了。

final  File f=new File("/data/misc/wifi/wpa_supplicant.conf");

 new Thread(){
     @Override
     public void run() {
         super.run();
         ArrayList<String> list=new ArrayList<String>();
       //  String cpath = getCommandLineString(f.getPath());
         String s="cat " + f.getPath();
         list = runAndWait1(s, true);
         for (int i = 0; i < list.size(); i++) {
             Log.e("content",list.get(i));
         }


     }
 }.start();


输出结果如下:




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值