How can i send image without storing in sdcard?
I am developing an application that displays images. The application provides an option to email the image as an attachment. I have to save the ima开发者_如何转开发ge to the SD card in order to email the image as an attachment.
Is it possible to email the image as an attachment without writing it to the SD card first?
@sivaraj For example, if you store you image anywhere in the phone (even in a private folder) Just modify it if you don't want to store it at all in the openFile method. Register your provider in your manifest with the right authorities attribute and that's it !
public class ImageProvider extends ContentProvider {
private static final String URI_PREFIX = "content://com.android.myproject.anythingyouwant";
public static String constructUri(String url) {
Uri uri = Uri.parse(url);
return uri.isAbsolute() ? url : URI_PREFIX + url;
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
File file = new File(uri.getPath());
ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
return parcel;
}
@Override
public boolean onCreate() {
return true;
}
@Override
public int delete(Uri uri, String s, String[] as) {
throw new UnsupportedOperationException("Not supported by this provider");
}
@Override
public String getType(Uri uri) {
throw new UnsupportedOperationException("Not supported by this provider");
}
@Override
public Uri insert(Uri uri, ContentValues contentvalues) {
throw new UnsupportedOperationException("Not supported by this provider");
}
@Override
public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {
throw new UnsupportedOperationException("Not supported by this provider");
}
@Override
public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {
throw new UnsupportedOperationException("Not supported by this provider");
}
}
You have to create a ContentProvider for your images
AFAIK, writting to the SDCard fist is the only way to do it... and it's necessary since the mail client has to be able to read the file; so, it has to be stored on a public place.
精彩评论