I'm trying to load an Image stored on the application files folder When i open the Activity I'm getting this error from logcat:
1-20 01:30:40.125 14331-14331/mx.eusaga.af W/ImageView: Unable to open content: content://mx.eusaga.af.fileprovider/imagenes/1-db384fa8-f28b-4595-abbf-d45d38fd4036.jpg java.io.FileNotFoundException: No such file or directory at android.os.Parcel.openFileDescriptor(Native Method) at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:253) at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:199) at android.support.v4.content.FileProvider.openFile(FileProvider.java:545) at android.content.ContentProvider.openAssetFile(ContentProvider.java:1322) at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1502) at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1568) at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:391) at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1080) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:921) at android.content.ContentResolver.openInputStream(ContentResolver.java:646) at android.widget.ImageView.resolveUri(ImageView.java:768) at android.widget.ImageView.setImageURI(ImageView.java:429) at android.support.v7.widget.AppCompatImageView.setImageURI(AppCompatImageView.java:124) at mx.eusaga.af.Adapter.ImagenAdapter.onBindViewHolder(ImagenAdapter.java:51) at mx.eusaga.af.Adapter.ImagenAdapter.onBindViewHolder(ImagenAdapter.java:30) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6482) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6515) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5458) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5724) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5563) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5559) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2229) at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:556) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1516) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:608) at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:170) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3693) at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:3109) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) at android.view.View.measure(View.java:17547) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) at android.widget.LinearLayout.onMeasure(L
The code Im using to get the image is the following:
private Uri obtenerImagen(String archivo) {
File Directorio = new File(context.getFilesDir() + "/imagenes/");
Directorio.mkdirs();
File imagen = new File(Directorio,archivo + ".jpg");
Uri uri = FileProvider.getUriForFile(context,"mx.eusaga.af.fileprovider",imagen);
return uri;
}
This is my fileprovider:
<!-- FileProvider -->
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="mx.eusaga.af.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
and these are my file paths:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="imagenes" path="imagenes/"/>
</paths>
The folder imagenes and the file 1-db384fa8-f28b-4595-abbf-d45d38fd4036.jpg exist in the correct folder.
Thanks for the help!!
Ur error says
Means the path you are providing is invalid.. Plz check your directory and file path
Have you tried Picasso: http://square.github.io/picasso/? You can load image from a file with way less code.