sky-mxc 总结 转载注明:https://sky-mxc.github.io
不使用第三方 SDK 实现简单分享
现在在Android系统中进行分享,主要有两种手段,一种是通过系统自带的来启动分享功能;第二种是通过第三方的SDK插件进行分享;今天先来看看系统自带的分享功能:Intent.ACTOIN_SEND;
- 分享文本
- 分享图片+文本 (QQ和微信不支持,只能将图片和文本分两次分享,目前来看只有新浪微博支持)
- 分享多图片 (和上面一样 ,目前只有新浪微博可以同时分享图片和文本)
- 分享图片+文本至微信朋友圈
- 检查是否有intent要启动的activity
分享存文本内容
1 | private void share() { |
在分享之前可以先查看一下手机上是否有分享平台,如果没有就给出提示可以增加用户友好度,通过 PackageManager的queryIntentActivities()查看是否有匹配intent的Activity1
2
3
4
5
6
7
8
9
10
11
12/**
* 判断是否存在intent要启动的Activity
* @param intent
* @return
*/
private boolean hasApplication(Intent intent){
//查询是否有该intent要启动的Activity
List<ResolveInfo> resolveInfos= getPackageManager().queryIntentActivities(intent,0);
log(resolveInfos.size()+"");
return resolveInfos.size()>0?true:false;
}
另外 使用 Intent.createChooser()可以避免出现默认程序的可能,还可以定义弹出框的标题 ,友好程度更好一些,下面看一下两者的区别
系统默认的主题( startActivity(intent))
使用 Intent.createChooser()
分享文本+图片
图片和文本一起分享 目前我测试的只有微博好使 ,QQ和微信 都只能分享图片,不接受文本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /**
* 分享图片 和文本
* QQ 微信 不能图片和文本一起分享
* 微博可以实现图片和文本一起分享
*/
private void shareChooser() {
String context = etContext.getText().toString();
intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_TEXT,context);
intent.putExtra(Intent.EXTRA_STREAM,uri);
if (hasApplication(intent)){
startActivity(Intent.createChooser(intent,"选择要分享到的平台吧"));
}
}
分享多张图片
和上面一样 我测试 只有微博能同时分享图片和文本
1 | /** |
分享 图片+文本到微信朋友圈
这个方式可以实现 图片+ 文本同时分享
1 | /** |
检查是否有隐式intent要启动的activity
有时候使用 隐式分享 ,并不知道是否存在分享平台 ,就可以通过以下代码测试
1 |
|

