gpt4 book ai didi

java - 打开失败: EACCES (Permission denied) Reading PNG Even Though I Have Permission

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

在我的应用程序中,我通过 ShareActionProvider 类添加一个共享按钮。我正在尝试分享从文件系统中提取的 PNG。问题是,当我尝试与股票消息应用程序共享它时,出现以下错误

com.google.android.mms.MmsException: /data/data/com.frostbytedev.wifiqr/files/QRCode.png: open failed: EACCES (Permission denied)

起初我以为这是我的权限,但我的 list 中有以下权限。

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

我尝试从文件系统获取它的地方在这里:

Uri uri = Uri.fromFile(new File(getFilesDir(), "/QRCode.png"));
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM,uri);
provider.setShareIntent(intent);

如果你想知道,他就是我保存图像的代码

String fileName = getFilesDir() + "/QRCode.png";
etSSID.setText(fileName);
OutputStream stream = null;
try {
stream = new FileOutputStream(fileName);
bmp.compress(Bitmap.CompressFormat.PNG, 80, stream);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

如何解决这个问题?

最佳答案

如果/data/data/com.frostbytedev.wifiqr是您应用程序的私有(private)目录,那么是的,您的应用程序有权读取该文件。您甚至不需要 WRITE_EXTERNAL_STORAGE 权限,因为它是“您的”目录。

但是,一旦您与其他应用程序共享该文件,该应用程序也需要读取该文件的权限。默认情况下,应用程序私有(private)目录中的文件并非如此。您收到的错误来自没有访问权限的彩信应用。

解决该问题的一个简单方法是将文件保存到每个应用程序都可以读取的位置。基本上 Environment.getExternalStorageDirectory() 中的所有内容.

下一个可能性是使该文件可供其他应用程序读取,但将其保留在您拥有的位置。 File#setReadable(true, false)应该这样做。

<小时/>

Context 还有很好的方法来简化以可读模式创建文件。

String fileName = getFileStreamPath("QRCode.png").getPath();
etSSID.setText(fileName);
OutputStream stream = null;
try {
stream = openFileOutput("QRCode.png", Context.MODE_WORLD_READABLE);
bmp.compress(Bitmap.CompressFormat.PNG, 80, stream);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

...

Uri uri = Uri.fromFile(getFileStreamPath("QRCode.png"));
.. share

关于java - 打开失败: EACCES (Permission denied) Reading PNG Even Though I Have Permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19990793/

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