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