读取Android系统文件

4

我尝试过很多读取文件的解决方案,但没有一个能够正常工作。

我需要一种方法来读取系统文件并将文本显示在toast或对话框中。

当然,我的应用程序具有root权限。

我需要在复选框单击后显示“eoc_status”的内容。

例如:

Runtime.getRuntime().exec("/sys/kernel/abb-chargalg/eoc_status").getInputStream(); 

我需要打开文本文件。


很抱歉,您需要提供一些示例代码来说明您尝试的内容,并更具体地说明您需要什么以及为什么需要。例如,您所说的“系统”文件是什么意思?这样做将更容易让人们帮助您,同时您的问题也将对其他寻找类似答案的人更有用。 - Rudi Kershaw
例如这个:Runtime.getRuntime().exec("/system/bin/getprop").getInputStream(); 我需要打开文本文件。 - mascIT
你想要检索哪个文件?是一个实际的系统文件(如果是,那么是哪一个?),还是你事先存储在某个地方的文件(如果是,你是如何存储它的)? - Rudi Kershaw
1
我已经编辑了主要问题。 - mascIT
文件的权限是什么?如果一个应用程序进程没有被允许读取它,你需要使用一个被黑客篡改过的su shim或类似的方式来启动一个辅助进程。 - Chris Stratton
1个回答

7
假设您对eoc_status有读取权限,您需要阅读它而不是执行它。即使用catFileReader来读取它。然后,您将想要对返回的InputStream做某些事情(将其放入您的提示中)。例如:
    BufferedReader  buffered_reader=null;
    try 
    {
        //InputStream istream = Runtime.getRuntime().exec("cat /sys/kernel/abb-chargalg/eoc_status").getInputStream();
        //InputStreamReader istream_reader = new InputStreamReader(istream);
        //buffered_reader = new BufferedReader(istream_reader);
        buffered_reader = new BufferedReader(new FileReader("/sys/kernel/abb-chargalg/eoc_status"));
        String line;

        while ((line = buffered_reader.readLine()) != null) 
        {
            System.out.println(line);
        }           
    } 
    catch (IOException e) 
    {
        // TODO 
        e.printStackTrace();
    }
    finally 
    {
        try 
        {
            if (buffered_reader != null)
                buffered_reader.close();
        } 
        catch (IOException ex) 
        {
            // TODO 
            ex.printStackTrace();
        }
    }       

1
没有必要将cat作为可执行文件启动,因为您可以直接从Java中进行读取。仅在通过黑客su的方式启动可执行文件时才有意义,这可能会作为运行cat作为root的shim,从而能够执行Java程序无法执行的操作。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接