码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-04-05 14:41:46      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:android系统分享   android自定义系统分享   

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;
	}
}


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

标签:android系统分享   android自定义系统分享   

原文地址:http://blog.csdn.net/yanzhenjie1003/article/details/44887279

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!