Rectifying FileUriExposedException

If we use the code

Uri imageuri = Uri.fromFile(new java.io.File(_path));

It will cause FileUriExposedException if the file:// Uri is exposed to another app. You cannot use uri.fromFile(File) in new versions of android because it causes file uri exposed exception.


You have to use File provider.


If you are using Sketchware:
1. First Add Camera Component.

2. Then use following code:
Uri imageUri = FileProvider.getUriForFile(MainActivity.this, getApplicationContext().getPackageName() + ".provider", new java.io.File(_path));


If you are using android studio
1. Put following code in AndroidManifest.xml:
<provider android:name="androidx.core.content.FileProvider" android:authorities="com.xxxx.xxxx.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider>

Replace com.xxxx.xxxx in code above with package name of your app.

2. In folder app/src/main/res/ create a folder 'xml'. Then in folder app/src/main/res/xml add a file provider_paths.xml. In provider_paths.xml, put following code:
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/> </paths>

3. Then use following code:
Uri imageUri = FileProvider.getUriForFile(MainActivity.this, getApplicationContext().getPackageName() + ".provider", new java.io.File(_path));


Comments

  1. You have a genuine capacity to compose a substance that is useful for us. You have shared an amazing post about mobile app developer dubai thanks for sharing this blog with us.

    ReplyDelete

Post a Comment

Popular posts from this blog

Simple car racing android game in Sketchware

Creating a Drawing View in Sketchware

Enable Fullscreen for Youtube videos in WebView

How to enable upload from webview in Sketchware?

List of Calendar Format symbols valid in Sketchware