Como complemento de lo @Cris Nash respondió:
que va a necesitar métodos de anulación como ejemplo de la clase anterior:
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;
}
}
que necesitaba para anular dos veces el método de consulta . Y añadir estas líneas por encima de la etiqueta en su AndroidManifest.xml:
<provider
android:name="com.android.example.AssetsProvider"
android:authorities="com.android.example"
android:grantUriPermissions="true"
android:exported="true" />
Y con esto, todo el trabajo como un encanto: D
me puede dar un ejemplo de cómo compartir imágenes de la carpeta dibujable de recursos? –
El formato es: 'android.resource: // [paquete]/[tipo]/[id]'. Por lo tanto, es un ejemplo de URI: ' "android.resource: //com.your.app/drawable/" + Integer.toStrng (R.drawable.some_resource)'. – Michael
He intentado usar share.putExtra (Intent.EXTRA_STREAM, Uri.parse ("android.resource: //com.packake.myapp/drawable/" + Integer.toString (R.drawable.myimage))); funciona al compartirlo con Gmail, pero cuando trato de compartirlo con el correo yahoo recibo el mensaje "Acceso denegado acceso. El recurso no se puede leer". ¿tienes alguna idea de por qué? –