Missing metadata android.support.FILE_PROVIDER_PATHS.

I am trying to open a PDF file that I downloaded and saved to external storage. But when I open my application, it crashes and shows the following error;

08-31 00:58:31.304 1807-1807/? E/AndroidRuntime: FATAL EXCEPTION: main Process: medimanage.corporate.mobile, PID: 1807 java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta-data at android.app.ActivityThread.installProvider(ActivityThread.java:5856) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5445) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.IllegalArgumentException: Missing android.support.FILE_PROVIDER_PATHS meta-data at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:586) at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:557) at android.support.v4.content.FileProvider.attachInfo(FileProvider.java:375) at android.app.ActivityThread.installProvider(ActivityThread.java:5853) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5445) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

The following is my asynchronous task, where I download this PDF file and try to open it.

 package myPackageName.common.postData; public class DownloadFileFromURL extends AsyncTask<String, String, String> { private ProgressDialog Dialog; private Context mContext; private String folder_main; //= "TermCondition"; private String fileName;//= "termCondition.pdf"; String urlString; public DownloadFileFromURL(Context mContext, String folderName) { this.mContext = mContext; this.folder_main = folderName; Dialog = new ProgressDialog(this.mContext); } @Override protected String doInBackground(String... f_url) { try { urlString = f_url[0]; URL url = new URL(f_url[0]); File folder = new File(Environment.getExternalStorageDirectory(), this.folder_main); if (folder.exists()) { folder.mkdirs(); } HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.connect(); InputStream inputStream = urlConnection.getInputStream(); FileOutputStream fileOutputStream = new FileOutputStream(Environment.getExternalStorageDirectory() + "/" + "default.pdf"); int totalSize = urlConnection.getContentLength(); byte[] buffer = new byte[AccessibilityNodeInfoCompat.ACTION_DISMISS]; while (true) { int bufferLength = inputStream.read(buffer); if (bufferLength <= 0) { break; } fileOutputStream.write(buffer, 0, bufferLength); } fileOutputStream.close(); } catch (FileNotFoundException e) { FileLog.e(mContext.getClass().getName(), e); } catch (MalformedURLException e2) { FileLog.e(mContext.getClass().getName(), e2); } catch (IOException e3) { FileLog.e(mContext.getClass().getName(), e3); } return null; } public void showPdf() { try { File file = new File(Environment.getExternalStorageDirectory() + "/" + "default.pdf"); try { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(mContext, "medimanage.corporate.mobile.fileprovider", file); intent.setDataAndType(contentUri, "application/pdf"); } else { intent.setDataAndType(Uri.fromFile(file), "application/pdf"); } mContext.startActivity(intent); } catch (ActivityNotFoundException anfe) { Toast.makeText(mContext, "No activity found to open this attachment.", Toast.LENGTH_LONG).show(); } } catch (Exception e) { FileLog.e(mContext.getClass().getName(), e); } } @Override protected void onPreExecute() { Dialog.setMessage("Downloading..."); Dialog.setCancelable(false); Dialog.setCanceledOnTouchOutside(false); Dialog.show(); } @Override protected void onPostExecute(String s) { this.Dialog.dismiss(); showPdf(); super.onPostExecute(s); } } 

Following is AndroidManifest.xml

 <application ...> <provider android:name="android.support.v4.content.FileProvider" android:authorities="myPackageName.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDE_PATHS" android:resource="@xml/provider_paths" /> </provider> </application> 

And provider_paths.xml has the following code;

 <?xml version="1.0" encoding="utf-8"?> <paths> <external-path path="Android/data/" name="files_root" /> <external-path path="." name="external_storage_root" /> </paths> 

I am trying to run the above code in API 19 and API 25, but it fails on both devices. I can’t find out where I am going wrong.

I submitted this question as well as this link, but could not find a solution to my problem.

+6
source share
7 answers

In your AndroidManifest file, you have a small typo in the metadata:

 <meta-data android:name="android.support.FILE_PROVIDER_PATHS" <-- HERE!!! android:resource="@xml/provider_paths" /> 

FILE_PROVIDER_PATHS instead of FILE_PROVIDE_PATHS.

+7
source

Please invalidate the caches and restart the function in Android studio, most likely it will.

After that rebuild and run the application. In my case, it worked perfectly.

+3
source

It seems that something is wrong, the compiler does not find the android.support.FILE_PROVIDER_PATHS file, so it gives this error, check if everything in your gradle file is installed correctly, if you change the .support android package this exception may occur.

After fixing, clean, rebuild, or clear and cancel the cache in Android Studio.

+1
source

Android: convert value + resource = @ xml / file_paths "

0
source

I recently ran into the same problem. and no other solution worked for me. I closed the project from Android Studio and then manually deleted the .gradle and .idea files, and it worked like a charm :). And before, I had a problem with the authorities - point to the file provider that you use with your applicationId. Hope this helps someone.

0
source

I had this problem, just delete all .gradle and and create a folder and then rebuilding the application worked for me

0
source

this is often caused by a typo when you can use android: value instead of android: resource in the metadata tag indicating the file_paths.xml file. For example, you may have:

 android:value="@xml/file_paths" 

instead

 android:resource="@xml/file_paths" 
-1
source

Source: https://habr.com/ru/post/1271384/


All Articles