標籤: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的彈窗,完全自訂