Android Share Images from Assets Folder

android share images from assets folder

Complementing what @intrepidis answered:

You will need override methods like example class above:

package com.android.example;

import android.content.ContentProvider;
import android.net.Uri;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import java.io.FileNotFoundException;
import android.content.ContentValues;
import android.database.Cursor;
import java.io.IOException;
import android.os.CancellationSignal;

public class AssetsProvider extends ContentProvider
{

@Override
public AssetFileDescriptor openAssetFile( Uri uri, String mode ) throws FileNotFoundException
{
Log.v( TAG, "AssetsGetter: Open asset file" );
AssetManager am = getContext( ).getAssets( );
String file_name = uri.getLastPathSegment( );
if( file_name == null )
throw new FileNotFoundException( );
AssetFileDescriptor afd = null;
try
{
afd = am.openFd( file_name );
}
catch(IOException e)
{
e.printStackTrace( );
}
return afd;//super.openAssetFile(uri, mode);
}

@Override
public String getType( Uri p1 )
{
// TODO: Implement this method
return null;
}

@Override
public int delete( Uri p1, String p2, String[] p3 )
{
// TODO: Implement this method
return 0;
}

@Override
public Cursor query( Uri p1, String[] p2, String p3, String[] p4, String p5 )
{
// TODO: Implement this method
return null;
}

@Override
public Cursor query( Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal )
{
// TODO: Implement this method
return super.query( uri, projection, selection, selectionArgs, sortOrder, cancellationSignal );
}

@Override
public Uri insert( Uri p1, ContentValues p2 )
{
// TODO: Implement this method
return null;
}

@Override
public boolean onCreate( )
{
// TODO: Implement this method
return false;
}

@Override
public int update( Uri p1, ContentValues p2, String p3, String[] p4 )
{
// TODO: Implement this method
return 0;
}
}

I needed to override two times the query method.
And add these lines above tag in your androidmanifest.xml:

<provider
android:name="com.android.example.AssetsProvider"
android:authorities="com.android.example"
android:grantUriPermissions="true"
android:exported="true" />

And with this, all work like a charm :D

Problems sharing an image from assets in Android

The main problem is that the Uri has to be parsed from a Filewith Uri.fromFile(File file) then everything works ok!

Adding images from assets folder in adapter

It must be setImageBitmap(bitmap) not setImageResource(bitmap)

How to use image in android:src= from assets folder instead of drawable

No it is not possible directly in XML although you can do it pragmatically.

AssetManager assetManager = getAssets();
ImageView imageView = (ImageView) findViewById(R.id.iv_image);
try {
InputStream ims = assetManager.open("my_image.jpg");
Drawable d = Drawable.createFromStream(ims, null);
imageView.setImageDrawable(d);
} catch (IOException ex) {
return;
}

How to set images from assets folder to list view?(using SimpleAdapter)

Simple Adapter can work only with IDs in drawable-folder or with Uri. But you can use ViewBinder to set image using setImageBitmap method.



Related Topics



Leave a reply



Submit