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的弹窗,完全自定义
原文地址:http://blog.csdn.net/yanzhenjie1003/article/details/44887279