一、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();
}
} }}
最終結果
這個管理是小米手機自帶的,其他手機不會顯示