一、Android原生分享,即使用Android原生sdk进行分享,相比第三方sdk,优点是不用下载第三方jar包之类的,减小了项目的大小。但是分享功能没有第三方的使用的方便。
二、开始撸代码~~(代码中只进行了文本内容的分享)
public class ShareUtils {
public static void share(Context context, String msg) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
// 查询所有可以分享的Activity
List<ResolveInfo> resInfo = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
Log.d("tag", resInfo.size() + "");
if (resInfo.size() > 0)
{
//将使用到的分享的应用放入一个集合中
List<Intent> targetedShareIntents = new ArrayList<Intent>();
//遍历所有可分享应用,筛选出你想要的应用
for (ResolveInfo info : resInfo)
{
Intent targeted = new Intent(Intent.ACTION_SEND);
targeted.setType("text/plain");
ActivityInfo activityInfo = info.activityInfo;
Log.v("logcat", "packageName=" + activityInfo.packageName + "Name=" + activityInfo.name);
// 分享出去的内容
targeted.putExtra(Intent.EXTRA_TEXT, "来自xxx应用的分享:" + msg);
// 分享出去的标题
targeted.putExtra(Intent.EXTRA_SUBJECT, "主题");
targeted.setPackage(activityInfo.packageName);
targeted.setClassName(activityInfo.packageName, info.activityInfo.name);
PackageManager pm = context.getApplicationContext().getPackageManager();
// 我们的APP只让分享到qq、qq空间、微博和微信。所以需要将扫描出来的可分享应用进行筛选。
//筛选方法:不同的可用于分享的app有不同的application信息,可根据那些信息进行筛选应用。
//由于微信分享有分享给好友,分享到微信搜藏,所以需要区分,区分方法是判断loadLabel,二者的loadLabel不同。
if (info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("微信") &&
!info.loadLabel(pm).toString().contains("添加到微信收藏") ||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("QQ") &&
info.loadLabel(pm).toString().contains("发送给好友") ||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("微博") &&
info.loadLabel(pm).toString().contains("微博") ||
info.activityInfo.applicationInfo.loadLabel(pm).toString().equals("QQ空间"))
{
targetedShareIntents.add(targeted);
}
}
// 选择分享时的标题
if (targetedShareIntents.size() > 0)
{
Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "选择分享");
if (chooserIntent == null) {
return;
}
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{}));
try {
context.startActivity(chooserIntent);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(context, "找不到该分享应用组件", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(context, "找不到可分享的应用组件", Toast.LENGTH_SHORT).show();
}
} }}
这个管理是小米手机自带的,其他手机不会显示