【问题标题】:how to access /data/data/[package] in KitKat (going forward)?如何访问 KitKat 中的 /data/data/[package](未来)?
【发布时间】:2014-05-13 21:43:25
【问题描述】:

在运行 Android 4.4.2 的 Nexus 5 上,我使用

保存了一些调试数据
        fOut = mActivity.openFileOutput("debugdata.txt", Context.MODE_APPEND|Context.MODE_WORLD_READABLE);
        OutputStreamWriter osw = new OutputStreamWriter(fOut);  
        osw.write(javaScript+"\n\n");
        osw.flush();
        osw.close();

而且,当我转到 DDMS -> 文件资源管理器时,我无法进入“数据”文件夹。

如今,在文件中保存和访问调试数据(或任何数据)的“新”方式是什么?

【问题讨论】:

  • 不管里面文件的权限如何(应该仍然可以工作),数据文件夹本身不是(据我所知从来没有)browsable on一个安全的设备。如果它具有世界读取权限,您仍然应该能够从命令行中提取实际文件。或者您可以在调试 apk 上使用 run-as 工具,在不安全的模拟器上运行,让您的程序将数据保存在外部存储中,等等...
  • 太好了,谢谢!我使用过一些(不安全的)设备并且可以访问 - 我没有意识到它通常是安全的。

标签: android


【解决方案1】:

当我转到 DDMS -> 文件资源管理器时,我无法进入“数据”文件夹

您在任何 Android 生产设备上都无法访问该文件夹,但您已获得 root 权限并专门配置为可以访问该文件夹的设备除外。这对 Android 4.4 来说并不是什么新鲜事。

如今,在文件中保存和访问调试数据(或任何数据)的“新”方式是什么?

使用模拟器。

或者,使用 adb run-as 作为与您的应用关联的用户 ID 执行命令(例如,cp)。

或者,更改您的代码以写入外部存储。

或者,在您的应用中添加某种“导出”或“备份”选项以将文件复制到外部存储。

或者,向您的应用添加某种“共享”选项,该选项会触发ACTION_SEND,以允许您使用首选机制从设备共享文件。

或者,将其记录到 LogCat。

或者,将日志文件查看器添加到您的应用中。

【讨论】:

    【解决方案2】:

    根您的设备并更改权限

    adb shell (设备) -> su -> chmod 777 /data/data/yourpackage

    【讨论】:

    • 除了不明智之外,这并不像你想象的那么简单,所以这个答案相当不完整。
    • 我同意。我认为完整的命令是chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/* 但手机必须先root
    • 不,不要使用 777 - 授予其他人对应用程序私有目录的写入权限是不好的做法。而且您确实应该授予对特定文件的读取权限,而不是目录。为此,您甚至不需要 root - 您可以让应用程序本身设置文件模式。
    • @ChrisStratton :我完全同意,但有人想完整回答,谢谢
    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多