开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜