意图共享无法附加图像
Intent share is not able to attach image
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "My text");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(http://onman.ir/colorfinder/sample.jpg));
sendIntent.setType("*/*");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(sendIntent, "Share using"));
此代码无法在与 Gmail
共享意图时附加图像,在与仅共享多张图像或视频的 Facebook
共享时也会出错。当我使用 sendIntent.setType("image/*")
更改类型时,它会打开 Facebook
的共享 window,但文本和图像为空白。
这个对我有用
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getResources().getString(R.string.share_subject));
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, getResources().getString(R.string.share_message));
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(yourimagepath);
startActivity(Intent.createChooser(shareIntent, "Share Image"));
您可以使用此代码进行分享
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT,"abc");
shareIntent.putExtra(Intent.EXTRA_STREAM, imagebitmap);
startActivity(Intent.createChooser(shareIntent, "Share using"));
但是如果你想在 facebook 上做,它不会通过 intent 工作,你应该使用 facebook sdk 来分享图像和文本
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)
.setLink(url)
.setCaption(getString(R.string.fb_share))
.setDescription(getString(R.string.fb_share))
.setPicture(
"https://scontent-lhr3-1.xx.fbcdn.net/hphotos-xfp1/v/t1.0-9/11899955_1616850925232395_9146772907853639083_n.jpg?oh=3dd7da7bf03edee84689d66af2024880&oe=56793D62")
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
dismissProgressBar();
并且在您的代码中您直接共享图像 url 首先您需要获取位图然后共享位图而不是 url
private void shareImage() {
意图分享 = 新意图 (Intent.ACTION_SEND);
// If you want to share a png image only, you can do:
// setType("image/png"); OR for jpeg: setType("image/jpeg");
share.setType("image/*");
// Make sure you put example png image named myImage.png in your
// directory
String imagePath = Environment.getExternalStorageDirectory()
+ "/myImage.png";
File imageFileToShare = new File(imagePath);
Uri uri = Uri.fromFile(imageFileToShare);
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Image!"));
试试这个代码
请注意,当您使用 setType() 方法时,您将启用 Android 来过滤哪些应用可以共享您的内容。例如,您正在共享文本或 URL,要显示的适当应用可以是 Facebook、消息或电子邮件。如果您要分享图片,合适的应用可以是 Instagram、Snapped 或 Picasa。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == UPLOADIMAGE && resultCode == RESULT_OK)
{
uploadImage.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
if (data !=null)
{
imageUri=data.getData();
imageView.setImageURI(imageUri);
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
columnIndex = cursor.getColumnIndex(filePathColumn[0]);
attachmentFile = cursor.getString(columnIndex);
Log.e("Attachment Path:", attachmentFile);
URI = Uri.parse("file://" + attachmentFile);
cursor.close();
}
else {Toast.makeText(TutorForm.this,"Uploading image failed",Toast.LENGTH_LONG).show();}
}
super.onActivityResult(requestCode, resultCode, data);
OnClickListner
Intent emailIntent=new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+ clientEmail));
emailIntent.putExtra(Intent.EXTRA_TEXT,body);
emailIntent.putExtra(Intent.EXTRA_SUBJECT,"Tutor Registration from App");
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = Uri.parse(imageUri.toString());
emailIntent.putExtra(Intent.EXTRA_STREAM,URI);
startActivity(Intent.createChooser(emailIntent,"Send Via..."));
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.setType("image/*");
//set your message
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, msgText);
String imagePath = Environment.getExternalStorageDirectory() +
File.separator + "image_name.jpg";
File imageFileToShare = new File(imagePath);
Uri uri = Uri.fromFile(imageFileToShare);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
Uri uri = Uri.fromFile(imageFileToShare);
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "My text");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(http://onman.ir/colorfinder/sample.jpg));
sendIntent.setType("*/*");
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(Intent.createChooser(sendIntent, "Share using"));
此代码无法在与 Gmail
共享意图时附加图像,在与仅共享多张图像或视频的 Facebook
共享时也会出错。当我使用 sendIntent.setType("image/*")
更改类型时,它会打开 Facebook
的共享 window,但文本和图像为空白。
这个对我有用
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, getResources().getString(R.string.share_subject));
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, getResources().getString(R.string.share_message));
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(yourimagepath);
startActivity(Intent.createChooser(shareIntent, "Share Image"));
您可以使用此代码进行分享
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.putExtra(Intent.EXTRA_TEXT,"abc");
shareIntent.putExtra(Intent.EXTRA_STREAM, imagebitmap);
startActivity(Intent.createChooser(shareIntent, "Share using"));
但是如果你想在 facebook 上做,它不会通过 intent 工作,你应该使用 facebook sdk 来分享图像和文本
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this)
.setLink(url)
.setCaption(getString(R.string.fb_share))
.setDescription(getString(R.string.fb_share))
.setPicture(
"https://scontent-lhr3-1.xx.fbcdn.net/hphotos-xfp1/v/t1.0-9/11899955_1616850925232395_9146772907853639083_n.jpg?oh=3dd7da7bf03edee84689d66af2024880&oe=56793D62")
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
dismissProgressBar();
并且在您的代码中您直接共享图像 url 首先您需要获取位图然后共享位图而不是 url
private void shareImage() { 意图分享 = 新意图 (Intent.ACTION_SEND);
// If you want to share a png image only, you can do:
// setType("image/png"); OR for jpeg: setType("image/jpeg");
share.setType("image/*");
// Make sure you put example png image named myImage.png in your
// directory
String imagePath = Environment.getExternalStorageDirectory()
+ "/myImage.png";
File imageFileToShare = new File(imagePath);
Uri uri = Uri.fromFile(imageFileToShare);
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, "Share Image!"));
试试这个代码
请注意,当您使用 setType() 方法时,您将启用 Android 来过滤哪些应用可以共享您的内容。例如,您正在共享文本或 URL,要显示的适当应用可以是 Facebook、消息或电子邮件。如果您要分享图片,合适的应用可以是 Instagram、Snapped 或 Picasa。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == UPLOADIMAGE && resultCode == RESULT_OK)
{
uploadImage.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
if (data !=null)
{
imageUri=data.getData();
imageView.setImageURI(imageUri);
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
columnIndex = cursor.getColumnIndex(filePathColumn[0]);
attachmentFile = cursor.getString(columnIndex);
Log.e("Attachment Path:", attachmentFile);
URI = Uri.parse("file://" + attachmentFile);
cursor.close();
}
else {Toast.makeText(TutorForm.this,"Uploading image failed",Toast.LENGTH_LONG).show();}
}
super.onActivityResult(requestCode, resultCode, data);
OnClickListner
Intent emailIntent=new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+ clientEmail));
emailIntent.putExtra(Intent.EXTRA_TEXT,body);
emailIntent.putExtra(Intent.EXTRA_SUBJECT,"Tutor Registration from App");
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uri = Uri.parse(imageUri.toString());
emailIntent.putExtra(Intent.EXTRA_STREAM,URI);
startActivity(Intent.createChooser(emailIntent,"Send Via..."));
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.setType("image/*");
//set your message
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, msgText);
String imagePath = Environment.getExternalStorageDirectory() +
File.separator + "image_name.jpg";
File imageFileToShare = new File(imagePath);
Uri uri = Uri.fromFile(imageFileToShare);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
Uri uri = Uri.fromFile(imageFileToShare);
sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);