Android调用系统分享分享内容到其他应用,不使用系统的ActionBar的弹窗,完全自定义

Android分享内容到其他应用,调用系统的Dialog或者ActionBar的弹窗都不太自由,限制太大,这里我提供一个完全自定界面的,可以弹窗,也可以直接在Activity或者Fragment里边自定义界面。这里展示一个关键类的代码,做了封装处理,我写两个一个Demo,免费源码在:http://download.csdn.net/detail/yanzhenjie1003/8565449

/**
 * @author YOLANDA
 * @Time 2015年4月5日 下午1:03:11
 */
public class ShareUtil {

	/**
	 * 拿到要显示的应用数据
	 * @author YOLANDA
	 * @param context
	 * @param type
	 * @return
	 */
	public static ArrayList<ListDrawableItem> getShowData(Context context, List<ResolveInfo> resolveInfos){
		ArrayList<ListDrawableItem> drawableItems = new ArrayList<ListDrawableItem>();
		PackageManager mPackageManager = context.getPackageManager();
		for (int i = 0; i < resolveInfos.size(); i++) {
			ResolveInfo info = resolveInfos.get(i);
			ListDrawableItem dialogItemEntity = new ListDrawableItem(info.loadLabel(mPackageManager), info.loadIcon(mPackageManager));
			drawableItems.add(dialogItemEntity);
		}
		return drawableItems;
	}

	/**
	 * 通过系统分享内容出去
	 * @author YOLANDA
	 * @param context
	 * @param ChooserTitle 选择器的标题
	 * @param packageName 包名
	 * @param imgPathOrText 图片路径或者文字
	 * @param type 分享内容的类型
	 */
	public static void exeShare(Context context, String chooserTitle, String packageName, String imgPathOrText, Type type) {
		Intent intent = new Intent(Intent.ACTION_SEND);
		switch (type) {
		case Image:
			intent.setType("image/*");
			File imgPath = new File(imgPathOrText);
			Uri uri = Uri.fromFile(imgPath);
			intent.putExtra(Intent.EXTRA_STREAM, uri);
			break;
		case Text:
			intent.setType("text/plain");
			intent.putExtra(Intent.EXTRA_TEXT, imgPathOrText);
			break;
		}
		intent.setPackage(packageName);
		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		try {
			context.startActivity(Intent.createChooser(intent, chooserTitle));
		} catch (ActivityNotFoundException e) {
		}
	}

	/**
	 * 得到支持分享的应用
	 * @author YOLANDA
	 * @param context
	 * @return
	 */
	public static List<ResolveInfo> getShareTargets(Context context, Type type) {
		List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
		Intent intent = new Intent(Intent.ACTION_SEND, null);
		intent.addCategory(Intent.CATEGORY_DEFAULT);
		switch (type) {
		case Image:
			intent.setType("image/*");
			break;
		default:
			intent.setType("text/plain");
			break;
		}
		PackageManager pm = context.getPackageManager();
		mApps = pm.queryIntentActivities(intent, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
		return mApps;
	}

	/**
	 * 分享类型
	 * @Project SmartControl
	 * @Class ShareUtil.java
	 * @author YOLANDA
	 * @Time 2015年3月4日 上午10:21:16
	 */
	public enum Type{
		/**图片**/
		Image,
		/**文字**/
		Text;
	}
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。