使用Intent完成一键分享图文

本文探讨了在Android中如何使用Intent进行一键分享图文。介绍了使用第三方SDK如shareSDK的简单方式,以及如何通过Intent分享文字和单张图片。对于图片的发送,详细讲述了从Assets加载、相册选取及获取图片绝对路径的方法。虽然多张图片和图片+文字的分享功能尚未实现,但提供了基础思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Intent完成一键分享图文

最牛的效果是做到图文都可以发送,如下::
这里写图片描述
上面的是用腾讯新闻界面的分享按钮发送的,包含分享、收藏、查看,以及一张封面图、标题和内容文字等布局。
本文并没有做到这个程度,只是做一个记录,以后碰到再学习,也欢迎高人指点。


1. 使用第三方SDK

推荐SDK有如shareSDK等,获取Appkey,按照说明应用即可,分享的界面一般来说无法修改。

2. 使用Intent

2.1 Intent完成文字发送

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT,"This is text to show.");
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            startActivity(Intent.createChooser(shareIntent, "分享到"));

分享时,该方法会自动搜索手机内可以支持该type的所有应用。

2.2 Intent完成单张图片发送

方法1:
- 仅用于尝试,因此起初打算发App内部的Assets中的图片,尝试了以下方法:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("image/*");
Uri uri = Uri.parse("file:///android_asset/ic_launcher");
//或者ic_launcher.png都不行
sendIntent.putExtra(Intent.EXTRA_STREAM,uri);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
startActivity(Intent.createChooser(shareIntent, "分享到"));

提示找不到文件或者文件无效。

  • 寻找相册内图片发送:
Uri uriPic = Uri.fromFile(new File
("content://media/external/images/media/system/"+       "media/Preloaded/Pictures/Picture_A_Skyscraper.jpg"));
sendIntent.putExtra(Intent.EXTRA_STREAM,uriPic);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            startActivity(Intent.createChooser(shareIntent, "分享到"));

仍然提示找不到文件或者文件无效。

  • 将Asset内图片在相册复制一份缩略图后发送:
InputStream is;
Bitmap bitmap = null;
try {
    is = getAssets().open("ic_launcher.png");
    bitmap = BitmapFactory.decodeStream(is);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    System.err.println("no such file error");
}
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(  
 getContentResolver(), bitmap, "ic_launcher.png", null));  
sendIntent.putExtra(Intent.EXTRA_STREAM,uri);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            startActivity(Intent.createChooser(shareIntent, "分享到"));

这种方法是对的,会在相册生成该图的缩略图,然后发送。

所以问题来了,我之前在Asset和相册中发送不成功的原因很可能是路径原因,希望有读到此文的高手指点一下,如何分享相册内图片或完成相册内部的分享照片功能。

方法2:
找到单张图片的绝对路径也是可以行得通,之前提示无文件或该文件无效基本都是由于路径问题,将图片放入SD卡中,由于系统不同,绝对路径可能不同,可以进入手机的SD卡路径下,查看该图片的详细信息,会显示绝对路径,将该路径写入程序中的File路径就可以:

String fileName = "storage/sdcard1/DCIM/Camera/q1.png";
File file = new File(fileName);     shareIntent.setType("image/*");         shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            startActivity(Intent.createChooser(shareIntent, "分享到"));

实测通过

2.3 Intent完成多张图片发送
暂未实现
2.4 Intent完成图片+文字发送
暂未实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值