【问题标题】:Where does application data file actually stored on android device?应用程序数据文件实际存储在 android 设备上的什么位置?
【发布时间】:2012-06-04 09:10:59
【问题描述】:

我使用 Appcelerator Titanium 开发了一个 Android 应用程序。这个应用程序将在 applicationDataDirectory 中创建一个文件并安装一个数据库。

如果在模拟器上运行,我可以使用“adb”命令找到这些文件。但是在Android设备上呢?我可以使用“我的文件”应用程序查看我创建的那些文件吗? (因为我可以在那里看到其他应用程序创建的文件。)

此外,我希望一旦我删除设备上的应用程序,它会自动删除相关文件和数据库。这是真的吗?

因为我发现即使我从设备中删除了应用程序,数据库似乎也被遗忘了。我可以说,因为在删除应用程序并在设备上重新运行(从 Titanium)后,它会显示以前的数据。

我正在使用 Ti SDK 2.0.1GA2,Android Runtime V8。并使用三星 Galaxy Tab 进行测试。 提前致谢。

【问题讨论】:

    标签: android file titanium appcelerator


    【解决方案1】:

    这是一种识别特定应用的应用相关存储路径的简单方法。

    步骤:

    1. 将 android 设备连接到您的 mac 或 android 模拟器打开
    2. 打开终端
    3. adb 外壳
    4. 找到。

    “寻找”。命令将在终端中列出所有文件及其路径。

    ./apex/com.android.media.swcodec
    ./apex/com.android.media.swcodec/etc
    ./apex/com.android.media.swcodec/etc/init.rc
    ./apex/com.android.media.swcodec/etc/seccomp_policy
    ./apex/com.android.media.swcodec/etc/seccomp_policy/mediaswcodec.policy
    ./apex/com.android.media.swcodec/etc/ld.config.txt
    ./apex/com.android.media.swcodec/etc/media_codecs.xml
    ./apex/com.android.media.swcodec/apex_manifest.json
    ./apex/com.android.media.swcodec/lib
    ./apex/com.android.media.swcodec/lib/android.hidl.memory.token@1.0.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_common.so
    ./apex/com.android.media.swcodec/lib/android.hardware.graphics.mapper@2.0.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_vorbisdec.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_h263dec.so
    ./apex/com.android.media.swcodec/lib/libhidltransport.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_h263enc.so
    ./apex/com.android.media.swcodec/lib/libcodec2_vndk.so
    ./apex/com.android.media.swcodec/lib/android.hardware.graphics.mapper@2.1.so
    ./apex/com.android.media.swcodec/lib/libmedia_codecserviceregistrant.so
    ./apex/com.android.media.swcodec/lib/libhidlbase.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_aacdec.so
    ./apex/com.android.media.swcodec/lib/libcodec2_soft_vp9dec.so
    .....
    

    在此之后,只需使用捆绑标识符搜索您的应用,您就可以使用 adb pull 命令将文件下载到您的本地目录。

    【讨论】:

      【解决方案2】:

      您可以从您的 document_cache 文件夹、子文件夹(我的是 1946507)中获取 if。在那里,通过将 .pdf 添加到文件末尾来重命名“内容”,保存并使用任何 pdf 阅读器打开。

      【讨论】:

        【解决方案3】:

        使用 Context.getDatabasePath(databasename)。可以从您的应用程序中获取上下文。

        如果您取回以前的数据,则可能是 a) 数据存储在非常规位置,因此不会在卸载时删除,或者 b) Titanium 使用应用程序备份了数据(它可以这样做)。

        【讨论】:

          【解决方案4】:

          在 Android 4.4 KitKat 上,我在以下位置找到了我的: /sdcard/Android/data/<app.package.name>

          【讨论】:

          • 并非所有应用程序都将数据保存在同一个位置。如果它安装在 sdcard 上,则信息将在卡 sdcard/android/data 上,否则在 root/data/data 上
          【解决方案5】:

          应用程序私有数据文件存储在<internal_storage>/data/data/<package>

          可以使用openFileOutput()openFileInput() 访问存储在内部存储器中的文件

          当这些文件被创建为MODE_PRIVATE 时,无法在其他应用程序(例如 FileManager)中查看/访问它们。

          【讨论】:

          • 您可以使用文件管理器应用访问/data/data,但您需要先root手机。
          • 您将需要一个可以使用的称职的文件管理器应用程序。 ASTRO 文件管理器很受欢迎,但它不支持 root 访问,因此对于高级用户来说毫无用处。您应该能够使用 ES File Explorer 或 File Expert。我最近在使用 ES 文件资源管理器查看 /data/data 或其他受保护的文件夹时遇到了问题,并且几乎放弃了它,我现在正在使用文件专家。它们都要求您进入设置并启用根资源管理器选项(有时还需要将文件系统挂载为可写)。所以你需要先做到这一点,然后一切准备就绪。
          • @papaiatis 首先我很抱歉提出这个评论。我阅读了您关于禁止帐户的 meta 帖子,我有一个问题。我朋友的帐户因投票违规而被暂停 7 天。我的问题是,他能再次回答问题吗?我记得他删除了他没有得到任何选票的答案。这将如何影响他回答问题。请解释一下。谢谢。
          猜你喜欢
          • 2011-05-14
          • 2014-07-11
          • 1970-01-01
          • 1970-01-01
          • 2011-01-27
          • 1970-01-01
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          相关资源
          最近更新 更多