有人可以帮助我如何将图像发送到android中的另一个应用程序吗?
我想发送一张用作壁纸的图像,BBM显示图片以及其他可以使用它的应用程序(如WhatsApp,联系人等)
我使用此代码,但它只能用于发送文本而不是我想要的图像
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(sendIntent);
然后我尝试使用此代码设置壁纸
public void setAsWallpaper(Bitmap bitmap) {
try {
WallpaperManager wm = WallpaperManager.getInstance(_context);
wm.setBitmap(bitmap);
//disinimas
Toast.makeText(_context,
_context.getString(R.string.toast_wallpaper_set),
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(_context,
_context.getString(R.string.toast_wallpaper_set_failed),
Toast.LENGTH_SHORT).show();
}
}
代码问题,位图图像直接应用为壁纸。我想在上面发送文本,用户可以选择使用其他应用程序。所以我想要一个稍后可以用于壁纸,BBM显示图片或其他支持它的应用程序的位图图像
位图变量已包含我想要的图像,使用此代码从互联网获取的图像:
Bitmap bitmap = ((BitmapDrawable) fullImageView.getDrawable())
.getBitmap();
我使用此代码及其工作,但给我一条消息BBM:找不到文件,WhatsApp:文件不是图像:
Bitmap icon = bitmap;
Intent share = new Intent(Intent.ACTION_ATTACH_DATA);
share.setType("image/jpeg");
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,
values);
OutputStream outstream;
try {
outstream = getContentResolver().openOutputStream(uri);
icon.compress(Bitmap.CompressFormat.JPEG, 100, outstream);
outstream.close();
} catch (Exception e) {
System.err.println(e.toString());
}
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Image"));
答案 0 :(得分:1)
感谢您对Antrromet的帮助,最后我用以下代码解决了我的问题:
Bitmap icon = bitmap;
// Intent share = new Intent(Intent.ACTION_SEND);
// share.setType("image/*");
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, "title");
values.put(Images.Media.MIME_TYPE, "image/*");
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,
values);
OutputStream outstream;
try {
outstream = getContentResolver().openOutputStream(uri);
icon.compress(Bitmap.CompressFormat.JPEG, 100, outstream);
outstream.close();
} catch (Exception e) {
System.err.println(e.toString());
}
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(uri, "image/*");
intent.putExtra("mimeType", "image/*");
this.startActivity(Intent.createChooser(intent, "Set as:"));
现在图像可以用作壁纸,BBM个人资料图片,WA显示图片,Coontact显示图片等。谢谢
答案 1 :(得分:0)
您是否尝试使用以下代码?它用于send binary data其他应用。
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));
或者,如果您没有包含URI,但却使用了Bitmap,那么请尝试使用给定here的代码。
<强>更新强>
为BBM设置壁纸和个人资料图片是完全不同的事情,他们没有共同的意图。要设置壁纸,您可以按照here给出以下内容。
Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(uri, "image/jpeg");
intent.putExtra("mimeType", "image/jpeg");
this.startActivity(Intent.createChooser(intent, "Set as:"));
对于BBM,API未打开以更改用户图像。所以你不能通过你的应用程序做到这一点。