How to fix exposed beyond app through ClipData.Item.getUri

I was trying to build an application through which users can share complete screenshots of the current screen and share through the various apps.

While developing, I Stuck at the error exposed beyond app through ClipData.Item.getUri Due to that app gets crashed when I pressed on the Share Button.

I have resolved this issue while debugging, and I thought it would be great To make an article and solve other user problems.

Fix the issue

This issue arises after Android SDK 24 or android 7.0. Before that, we are able to access file content using file:/// after 7.0, we have to use content:// which is a more secure way to access files.

To learn more, you can read the documentation. Without taking any further moment, let’s fix the above issue.

When we want to access file content outside the application storage, we need to use FileProvider.getUriForFile() method.

Open the Activity file and use the below code to get the URI of a file

Inside the parameter pass, the following code first parameter will accept the current activity details for that we have used this.

The second parameters are the authority where you need to provide app signature along with .provider

  • BuildConfig.APPLICATION_ID Show package name.
  • getLocalClassName() It will show the current activity class name.
  • .provider subclass of ContentProvider to access data

In the last parameter provide the path of Image file that you have already created prior to this.

Create path.xml

We need to create an XML path for that right click on the res folder and create a new Android Resource Directory, save the directory name with xml.

create xml directory and file
Create XML Directory and file

Under the xml directory, please create a new xml file save with file_path.xml, open it and add the below command

Add provider in AndroidManifest

Once you complete the above process Open AndroidManifest and add the below command inside the <application> tag

android:authorities over here, use your application package name with class name where you have linked the URI along with .provider

Inside the <meta-data> tag on android: resources pass the above created xml file details.

Rest all, keep it the same as above and try to run applications, and you will not get the error if you follow the above steps correctly.

Wrap-up

That’s it to resolve exposed beyond app through ClipData.Item.getUri If the problem didn’t resolve, go through the article again.

If the problem still persists, use Pastebin and share your code with us we will try to fix it.

Please leave the comment If you found the article useful.

This Post Has 2 Comments

  1. meisam

    thanks bro!!!

  2. Vineet Billorey

    I replaced

    BuildConfig.APPLICATION_ID

    by

    getPackageName()

    and it worked.

Leave a Reply