gpt4 book ai didi

java - Android - 文件不会 move 或复制到内部应用程序存储

转载 作者:行者123 更新时间:2023-12-01 19:25:31 27 4
gpt4 key购买 nike

我有一个应用程序,它使用 DownloadManager 将一些文件下载到基本内部音乐目录,该目录是通过使用 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) 找到的。我想将音乐文件 move 到应用程序的内部存储中,以降低用户意外删除这些文件的可能性。我使用 getFilesDir() 获取应用程序内部存储目录的路径。然而,几乎我尝试了所有方法,它们都没有出现在那里。这是我所做的:

AndroidManifest.xml:我已设置必要的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

renameTo():我尝试使用 renameTo() 函数,但它总是返回 false:

        if(src.renameTo(dst)){
Log.d("File Move", "File successfully moved");
} else{
Log.e("File move", "File was not successfully moved");
}

输入流和输出流:

            InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(dst);
byte[] buff = new byte[1024];
int len;
while((len = is.read(buff)) > 0){
os.write(buff, 0, len);
}
is.close();
os.close();

这是完整目录的代码:

String sourcePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) + "/" + cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE)) + ".mp3";
String destinationPath = getFilesDir() + "/" + cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_TITLE)) + ".mp3";

我没有收到 FileIO 异常或类似错误。这些文件只是没有出现在指定的目标目录中。任何帮助或见解表示赞赏。谢谢!

最佳答案

解决方案:

在 res/xml 文件夹中创建 shareable_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="." />
<external-files-path
name="external_files"
path="." />
<root-path
name="sdcard1"
path="." />
</paths>

将以下内容添加到您的 list 文件中:

<application>
...
<provider
android:name="androidx.core.content.FileProvider"
android:grantUriPermissions="true"
android:exported="false"
android:authorities="${applicationId}">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/shareable_paths"/>
</provider>
...
...
</application>

原因:

必须设置文件提供程序才能执行存储操作

关于java - Android - 文件不会 move 或复制到内部应用程序存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59316298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com