Android 10-无法对我在getExternalFilesDir()中创建的文件获取PersistableUri权限

Android 10-无法对我在getExternalFilesDir()中创建的文件获取PersistableUri权限,uri,file-permissions,android-10.0,Uri,File Permissions,Android 10.0,使用下面的代码片段,我们在Android 10中的getExternalFilesDir()下的子文件夹中创建了一个文件。然而,在创建之后,如果我们尝试获取persistableUriPermission,它会抛出一个异常“不存在这样的权限…”。 我们需要进行检查,以了解该文件是否可以在公共实用程序中稍后读取,否则我们必须进行复制。请让我们知道我们可能做错了什么,以及如何解决这个问题。谢谢你的帮助 ParcelFileDescriptor filePFD = cxt.getContent

使用下面的代码片段,我们在Android 10中的getExternalFilesDir()下的子文件夹中创建了一个文件。然而,在创建之后,如果我们尝试获取persistableUriPermission,它会抛出一个异常“不存在这样的权限…”。 我们需要进行检查,以了解该文件是否可以在公共实用程序中稍后读取,否则我们必须进行复制。请让我们知道我们可能做错了什么,以及如何解决这个问题。谢谢你的帮助

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()
用于从存储访问框架(例如,
ACTION\u OPEN\u DOCUMENT
)获取的
Uri
值。它不适用于
文件提供程序
。而且,在Android 4.4及更高版本上使用
getExternalFilesDir()
不需要权限