私はこのコードを持っています:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
startActivity(intent);
Androidでメッセージングアプリを正常に起動します。
しかし、インテントを起動するときにビットマップオブジェクトをどのようにアタッチできますか?
私は http://developer.Android.com/reference/Android/content/Intent.html を読みました。必要なものに最も近いのは、次のようなEXTRA_STREAMです。
intent2.putExtra(Intent.EXTRA_STREAM、_uri);
しかし、私の場合、ビットマップのURIではなく、ビットマップオブジェクトの参照があります。
ビットマップオブジェクトをアタッチする方法を教えてください。
String pathofBmp = Images.Media.insertImage(getContentResolver(), bitmap,"title", null);
Uri bmpUri = Uri.parse(pathofBmp);
final Intent emailIntent1 = new Intent( Android.content.Intent.ACTION_SEND);
emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri);
emailIntent1.setType("image/png");
ここで、bitmapは、SDカードに保存する必要があるビットマップオブジェクトです。そして、そのウリをshareimageに使用します。
最初にビットマップをファイルに保存する必要があります。アプリのキャッシュに保存できます
private void shareBitmap (Bitmap bitmap,String fileName) {
try {
File file = new File(getContext().getCacheDir(), fileName + ".png");
FileOutputStream fOut = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
file.setReadable(true, false);
final Intent intent = new Intent( Android.content.Intent.ACTION_SEND);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
intent.setType("image/png");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
これを試してみてください:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
yourbitmapimagename.compress(CompressFormat.PNG, 0, bos);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_STREAM, bos.toByteArray());
startActivity(intent);