gpt4 book ai didi

java - 我将图像从一个目录复制到另一个目录,但它打开时显示为灰屏

转载 作者:行者123 更新时间:2023-12-01 18:59:21 25 4
gpt4 key购买 nike

我认为,目标非常简单:将一个文件复制到我的应用程序内的文件夹中。请注意,我使用以下样式,因为我的目标是 Android API 19+ 并且每次我尝试使用“Path”类,Android 抛出一个警告,说它的目标是 Api 22+(如果我没记错的话)

我使用以下命令复制用户选择的文件:

InputStream usersFile = new FileInputStream(fromFile);

OutputStream outFile = new FileOutputStream(destFolder + "/" + fileName);
byte[] buf = new byte[1024];

int bytesRead;
while ((bytesRead = usersFile.read(buf)) > 0)
{
outFile.write(buf, 0, bytesRead);
}

我相信这工作得很好,因为当我通过我的应用程序查看该文件夹时,我可以在那里看到新文件。因此,下一步是使用 Android Intents 来打开它,方法是要求用户根据其 MIME 类型选择一个程序:

String extensionFromFile = MimeTypeMap.getFileExtensionFromUrl(fullFilePath);
String fileMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extensionFromFile);

Log.i(TAG,extensionFromFile);
Log.i(TAG, fileMimeType);
Log.i(TAG, fullFilePath);

Intent openTheFile = new Intent(Intent.ACTION_VIEW);
openTheFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
openTheFile.setDataAndType(Uri.parse(fullFilePath),fileMimeType);
startActivity(openTheFile);

该选项将会出现,我选择画廊,但随后它只是将我带到灰色屏幕。我查看了详细信息,只看到了 1970 年的日期?!

我不知道为什么,如何将文件从源复制到目标?我确实想使用输入流和输出流,因为我希望将来向文件添加字节。

log.i 确实显示了正确的 Mime 类型,如果它是 jpeg 或 jpg,它将正确说明。

此外,如果我可以通过文件管理器访问我的应用程序中的文件可能会有所帮助,但 Android 只会允许 root 用户或应用程序访问这些文件(这是一件好事,但我不知道如何将其设置为允许公共(public)用户访问文件。但这主要用于测试目的)

最佳答案

答案:这是由于应用程序内的文件夹权限造成的。您无法从文件夹中打开该文件,因为普通用户没有权限。您需要成为 root 才能获得完全访问权限。

我通过在外部存储中创建一个所有人都可以访问的文件夹来克服这个问题。

关于java - 我将图像从一个目录复制到另一个目录,但它打开时显示为灰屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59650690/

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