Android API 25: 保存到 PRIVATE 存储时出现权限错误

Android API 25: Permission error while saving to PRIVATE storage

在 API25 之前,将文件保存到私人应用程序存储没有问题。然而,将 compileSdkVersion 和 targetSdkVersion 设置为 25,这是不可能的 - 每当我尝试 read/write 一个文件(在应用程序私有存储中)时,我得到 PERMISSION_DENIED 并且我的应用程序崩溃。

示例 1:这是 Realm 在调用 Realm.getDefaultInstance():

时抛出的异常

io.realm.exceptions.RealmFileException: Unable to open a realm at path '/data/data/[PACKAGE_NAME]/files/default.realm.management'. Please use a path where your app has read-write permissions. in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 81 Kind: PERMISSION_DENIED.

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

java.io.FileNotFoundException: /data/user/0/[PACKAGE_NAME]/files/[FILE_NAME] (Permission denied)

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

您的应用无法处理自己的文件。可能的原因包括:

  • 因为您更改了应用程序的 android:sharedUserId 值 — 如果您曾 add/change/remove 清单中的此属性,则必须完全卸载并重新安装该应用程序

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

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