java - 共享文件错误 FileUriExposedException
问题描述
我正在尝试使用共享按钮从我的应用程序共享图像文件,但收到错误我的代码是
public void shareingimage(){
// Here image is an Imageview
Uri bmpUri = getLocalBitmapUri(image);
String st;
if (bmpUri != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/*");
// Launch sharing dialog for image
shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("<b>Islamic Book Collection :</b>") + " https://play.google.com/store/apps/details?id=" + getPackageName());
startActivity(Intent.createChooser(shareIntent, "Share Image"));
} else {
Toast.makeText(AndroidLoadImageFromURLActivity.this,"Can Not Share Please Try Again", Toast.LENGTH_SHORT).show();
}
}
但是,无论何时我单击按钮并使用 onclick 调用上述方法,我都会收到以下错误
android.os.FileUriExposedException: file:///storage/emulated/0/Download/share_image_1620485579952.jpeg exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1978)
at android.net.Uri.checkFileUriExposed(Uri.java:2371)
at android.content.ClipData.prepareToLeaveProcess(ClipData.java:966)
at android.content.Intent.prepareToLeaveProcess(Intent.java:10917)
at android.content.Intent.prepareToLeaveProcess(Intent.java:10923)
at android.content.Intent.prepareToLeaveProcess(Intent.java:10902)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1671)
at android.app.Activity.startActivityForResult(Activity.java:4689)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4647)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at android.app.Activity.startActivity(Activity.java:5008)
at android.app.Activity.startActivity(Activity.java:4976)
at com.mypackage.ImageFromURLActivity.shareingimage(AndroidLoadImageFromURLActivity.java:365)
at com.mypackage.ImageFromURLActivity$8.onClick(AndroidLoadImageFromURLActivity.java:562)
at android.view.View.performClick(View.java:7339)
at android.widget.TextView.performClick(TextView.java:14221)
at android.view.View.performClickInternal(View.java:7305)
at android.view.View.access$3200(View.java:846)
at android.view.View$PerformClick.run(View.java:27787)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7076)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
此代码工作正常,但突然我收到此代码的错误。我不知道如何解决它,因为我从 imageview 获取文件并且我不知道这个问题的解决方案。任何帮助将不胜感激。
解决方案
推荐阅读
- batch-file - 如何在 bat 文件中使用 sendKey 方法?
- python - 无法通过网络表单在 django 中上传文件
- delphi - Delphi 中区分大小写的 MatchesMask 替代方案
- android - 在颤振中调整 api 26 的 build.gradle
- android - 当 Firebase 更新其数据时,当前活动将刷新
- r - 为什么 k=5 和 k=100 的混淆矩阵输出相同?
- python - 如何获取字典中值对象的计数?
- javascript - 使用时刻我们如何更改或设置日期并保持 unix 时间格式
- mysql - 如果您更改 innoDB 压缩级别会发生什么
- javascript - Webdriverio 错误适用于 mac 和 linux,但不适用于 Window10