使用Intent完成一键分享图文

来源:互联网 发布:淘宝退货率手机哪里看 编辑:程序博客网 时间:2024/05/18 00:02

使用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完成图片+文字发送
暂未实现

0 0
原创粉丝点击