Как я могу отправить изображение без сохранения в SDCard? - PullRequest
1 голос
/ 21 сентября 2010

Я разрабатываю приложение, которое отображает изображения.Приложение предоставляет возможность отправить изображение по электронной почте в виде вложения.Я должен сохранить изображение на SD-карту, чтобы отправить изображение в виде вложения.

Можно ли отправить изображение по электронной почте в виде вложения, не записав его сначала на SD-карту?

Ответы [ 3 ]

1 голос
/ 22 сентября 2010

Вы должны создать ContentProvider для ваших изображений

1 голос
/ 22 сентября 2010

@ sivaraj Например, если вы храните изображение в любом месте телефона (даже в личной папке), просто измените его, если вы вообще не хотите хранить его в методе openFile.Зарегистрируйте своего провайдера в своем манифесте с соответствующим атрибутом полномочий и все!

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");
        }
    }
0 голосов
/ 21 сентября 2010

AFAIK, запись в кулак SDCard - единственный способ сделать это ... и это необходимо, поскольку почтовый клиент должен иметь возможность читать файл; поэтому его нужно хранить в общественном месте.

...