我有一个由设置为MODE_PRIVATE的应用程序编写的xml文件,但我现在想要在手机外读取该文件,以便进行调试。在Eclipse中,我可以访问应用程序生成的其他文件并将它们复制到我的计算机上,但我甚至看不到这个私有文件。仅将文件更改为MODE_WORLD_READABLE文件似乎没有帮助。我认为该文件存储在无法从手机中删除的内部“SD卡”上,但文件资源管理器中还有两个其他文件夹为空或无法访问:asec和安全。
有谁知道如何访问该文件?
答案 0 :(得分:37)
如果您的应用安装在调试模式,则可以在设备上获取私有文件,而无需生根。
[android-sdk]/platform-tools
文件夹并运行adb shell
。run-as com.example.yourapp
cp -r /data/data/com.example.yourapp /sdcard/
(其中 com.example.yourapp 是您的应用程序的包名。) 执行上述步骤后,应用程序的私人文件夹将被复制到您的软件包名称下的 sdcard storage 的根目录中,您有权下载并查看它们
注意1 :如果您不需要下载它们,则可以使用unix命令导航并列出文件和文件夹,而不是第3步。
注意2 :从Android Studio 2.0开始,您会在cache
和files/instant-run
文件夹中找到与 Instant Run相关的更多文件和 GPU调试器功能,由IDE放置。
答案 1 :(得分:20)
你需要连接手机并做一些魔术让你的sdk使用它(我想把它放在调试模式?)。转到你解压缩android sdk的地方:
C:\android-sdk_r10-windows\android-sdk-windows\platform-tools>adb shell
#cd data/data/com.yourpackage.yourapp/files
#ls
您应该会看到列出的文件。如果您不确定应用程序的完全限定名称是什么,则可能需要运行“ls data / data”。从这里开始,如果文件很小,你只想看看里面有什么,你可以运行:
#cat yourfilename.xml
可替换地:
#exit
C:\android-sdk_r10-windows\android-sdk-windows\platform-tools>adb pull /data/data/com.yourpackage.yourapp/files/yourfile.xml
注意:我只在模拟器上试过这个,我不知道如何在物理手机上使用adb。
答案 2 :(得分:3)
您需要根据手机查看Context.MODE_PRIVATE文件
最终存储在我认为的数据文件中,但您需要root权限才能看到它们
因此要么根据您的手机,要么等到调试结束后再添加Context.MODE_PRIVATE
答案 3 :(得分:2)
如果使用Eclipse,还有一个选项:
DDMS Perspective>文件资源管理器标签>数据/数据/ com.yourpackage.yourapp /文件
您可以在其中拉/推/删除文件。
答案 4 :(得分:0)
另一个选择是在应用程序中有一个转储私有文件的命令。这只适用于你不想编辑文件的情况,但是在你投入生产之前你没有必要将其剥离,因为用户不能破坏它。好吧,只要文件不包含敏感信息。但是,真的,如果他们这样做,你做错了什么。正如@ user1778055所说,用户可以根据自己的手机访问它。