gpt4 book ai didi

安卓 6 : cannot share files anymore?

转载 作者:IT老高 更新时间:2023-10-28 21:50:52 25 4
gpt4 key购买 nike

我正在分享一张图片,此代码适用于 Android 6 之前的设备:

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
Uri uri = Uri.fromFile(new File(mFilename));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
mContext.startActivity(Intent.createChooser(shareIntent, mChooserTitle));

但是,当我尝试使用 Android 6 共享时,我收到了 toast 错误“无法附加空文件”。

我已验证文件存在且长度不为零。

谁有解决办法?

最佳答案

我通过实现 FileProvider 解决了这个问题,正如@CommonsWare 建议的那样

首先需要配置一个FileProvider:

  • 首先,添加 <provider>到您的文件 list XML

    <provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="com.myfileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
    android:name="android.support.FILE_PROVIDER_PATHS"
    android:resource="@xml/file_provider_paths" />
    </provider>
  • 其次,在一个单独的 XML 文件中定义你的文件路径,我称之为“file_provider_paths.xml

    <paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="share" path="/" />
    </paths>

您可以在 documentation page 中找到完整的解释。

在 XML 中设置文件提供程序后,这是共享图像文件的代码:

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
Uri fileUri = FileProvider.getUriForFile(mContext, "com.myfileprovider", new File(mFilename));
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
mContext.startActivity(Intent.createChooser(shareIntent, mChooserTitle));

关于安卓 6 : cannot share files anymore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981194/

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