Android 10 - 无法对我在 getExternalFilesDir() 中创建的文件执行 PersistableUriPermission

Android 10 - unable to take PersistableUriPermission on a file that I created in getExternalFilesDir()

使用下面的代码片段,我们在 Android10 中的 getExternalFilesDir() 下的子文件夹中创建了一个文件。但是,在创建之后,如果我们立即尝试获取 persistableUriPermission,它会抛出异常 "No such permission exists...."。 我们需要检查以了解该文件是否可供稍后在通用实用程序中读取,否则我们必须制作副本。请让我们知道我们可能做错了什么以及如何解决这个问题。感谢您的帮助。

ParcelFileDescriptor filePFD =
    cxt.getContentResolver().openFileDescriptor(Uri.parse(pathFileToSend), "r");
FileDescriptor fd = filePFD.getFileDescriptor();
FileInputStream fIn = new FileInputStream(fd);

File fileBaseFolder = new File(Utils.GetRootDirectory().getAbsolutePath(), Utils.DESTINATION);
if (!fileBaseFolder.exists())
fileBaseFolder.mkdirs();

if (fileBaseFolder.exists()) {
File copyFile = new File(fileBaseFolder.getAbsolutePath(), nameOfFile);

FileOutputStream fOut = new FileOutputStream(copyFile);
byte data[] = new byte[4096];
long total = 0;
int count;
while ((count = fIn.read(data)) != -1) {
    total += count;
    fOut.write(data, 0, count);
}

fOut.close();

Uri copiedFileUri =
    FileProvider.getUriForFile(cxt,
        cxt.getString(R.string.file_provider_authority),
        copyFile);
if (null != copiedFileUri)
{
    try {

    /*At this line, an exception is thrown - No persistable permissions exist.. */
    cxt.getContentResolver().takePersistableUriPermission(copiedFileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
    } catch (Exception e) {
    e.printStackTrace();
    }
}

takePersistableUriPermission() 用于您从存储访问框架获得的 Uri 值(例如,ACTION_OPEN_DOCUMENT)。它不适用于 FileProvider。而且,您不需要在 Android 4.4 及更高版本上使用 getExternalFilesDir() 的权限。