0

在 API 25 之前,将文件保存到私有应用存储是没有问题的。但是,将 compileSdkVersion 和 targetSdkVersion 设置为 25,这是不可能的 - 每当我尝试读/写文件(位于应用程序私有存储中)时,我都会得到 PERMISSION_DENIED 并且我的应用程序崩溃。

示例 1:这是 Realm 在调用 Realm.getDefaultInstance() 时抛出的异常:

io.realm.exceptions.RealmFileException:无法在路径“/data/data/[PACKAGE_NAME]/files/default.realm.management”处打开领域。请使用您的应用具有读写权限的路径。在 /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp 第 81 行种类:PERMISSION_DENIED。

示例 2:这是应用程序在尝试持久化文件时抛出的异常(在打开 FileOutputStream 时):

java.io.FileNotFoundException: /data/user/0/[PACKAGE_NAME]/files/[FILE_NAME] (权限被拒绝)

如前所述,我在 API 24 上没有这些问题。有人知道这个问题的可能原因是什么吗?

4

1 回答 1

1

您的应用程序失去了使用自己的文件的能力。可能的原因包括:

  • 因为您更改了android:sharedUserId应用程序的值 - 如果您曾经在清单中添加/更改/删除此属性,您必须完全卸载并重新安装应用程序

  • 与您正在测试的设备上的多个用户帐户有关,可能与...

  • ...您不小心绊倒的 Android 中的一些错误

于 2016-12-03T18:47:20.407 回答