Drawableからメールに画像を添付しようとしていた(アプリからGmailアプリへ)
私は次のコードを試しました:
Intent emailintent2 = new Intent(Android.content.Intent.ACTION_SEND_MULTIPLE);
emailintent2.setType("image/*");
emailintent2.putExtra(Intent.EXTRA_EMAIL, emailaddress2);
emailintent2.putExtra(Intent.EXTRA_SUBJECT, CorAsunto);
emailintent2.putExtra(Intent.EXTRA_TEXT, message2);
ArrayList<Uri> uris = new ArrayList<Uri>();
uris.add(Uri.parse("Android.resource://" + getPackageName() + "/" + R.drawable.image1));
uris.add(Uri.parse("Android.resource://" + getPackageName() + "/" + R.drawable.image2));
emailintent2.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(emailintent2);
しかし、電子メールに画像を添付すると、拡張子「.png」なしで添付されます。これは大きな問題です。
したがって、このDrawableイメージをビットマップに変換しようとすると、ArrayListはビットマップである必要があると思います。添付ファイルに画像が定義されている画像を取得すると思います。
可能であれば、誰かがそれを行う方法を教えてもらえますか?ビットマップに変換し、Arraylistに追加して画像を添付します。
私が言ったことすべてが間違っている場合、誰かが私に解決策を与えることができますか? Drawableから拡張子(.png)のメールに画像を添付する必要があります。
変換を実行するには3つの方法があります:
ImageView
にresource image
を設定します
imageView.setImageResource(R.drawable.icon);
そして、imageViewからビットマップを取得します
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
Resource ID
で直接描画可能なリソースを取得します
Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.profile_circle);
ImageView
に画像を設定し、Bitmap
に変換します(svg/VectorDrawableでも機能します)
ImageView imgView = (ImageView) findViewById(R.id.ImageView);
imgView.setImageResource(R.drawable.abc_image);
z.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
Drawable myDrawable = getResources().getDrawable(R.drawable.anImage);
Bitmap anImage = ((BitmapDrawable) myDrawable).getBitmap();
また、<bitmap>
要素を使用してXMLファイルで定義できます。
ここにコードの一部があります、それをチェックしてください:
Bitmap Icon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(),
R.drawable.ic_launcher);
ここで、mContextはアクティビティコンテキストです。
directの方法は次のとおりです。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image);
ビットマップをさらに構成する .xml描画可能ファイルで次のように定義した場合:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@[package:]drawable/drawable_resource"
Android:antialias=["true" | "false"]
Android:dither=["true" | "false"]
Android:filter=["true" | "false"]
Android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"]
Android:mipMap=["true" | "false"]
Android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
public Bitmap convertToBitmap(Drawable drawable, int widthPixels, int heightPixels) {
Bitmap mutableBitmap = Bitmap.createBitmap(widthPixels, heightPixels, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mutableBitmap);
drawable.setBounds(0, 0, widthPixels, heightPixels);
drawable.draw(canvas);
return mutableBitmap;
}
from https://msol.io/blog/Android/android-convert-drawable-to-bitmap/ 私のために働いた。