1

画像を表示するアプリケーションを開発しています。アプリケーションには、画像を添付ファイルとして電子メールで送信するオプションがあります。画像を添付ファイルとしてメールで送信するには、画像をSDカードに保存する必要があります。

最初にSDカードに書き込まずに画像を添付ファイルとして電子メールで送信することはできますか?

4

3 に答える 3

1

画像のContentProviderを作成する必要があります

于 2010-09-21T20:22:00.917 に答える
1

@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");
        }
    }
于 2010-09-22T09:03:43.253 に答える
0

AFAIK、SDCardの拳に書くことがそれを行う唯一の方法です...そして、メールクライアントがファイルを読み取ることができなければならないのでそれは必要です。そのため、公共の場所に保管する必要があります。

于 2010-09-21T16:01:47.053 に答える