首页 > 解决方案 > 共享文件错误 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 获取文件并且我不知道这个问题的解决方案。任何帮助将不胜感激。

标签: javaandroid

解决方案


推荐阅读