根據上一篇博客上所講的友盟組件的分享,自己實現了一個通用類:
首先,佈局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/fragment_twice_left"
android:layout_height="wrap_content"
android:paddingTop="@dimen/DIMEN_40PX_DP"
android:paddingBottom="@dimen/DIMEN_40PX_DP"
android:layout_width="match_parent"
android:orientation="horizontal">
<RadioButton
android:id="@+id/sharerb0"
style="@style/share_style"
android:text="微信"
android:layout_marginLeft="@dimen/DIMEN_80PX_DP"
android:drawableTop="@drawable/wx"
android:checked="true"/>
<RadioButton
android:id="@+id/sharerb1"
style="@style/share_style"
android:drawableTop="@drawable/wxfri"
android:layout_marginLeft="@dimen/DIMEN_60PX_DP"
android:text="朋友圈"/>
<RadioButton
android:id="@+id/sharerb2"
style="@style/share_style"
android:drawableTop="@drawable/sina"
android:layout_marginLeft="@dimen/DIMEN_60PX_DP"
android:text="新浪"/>
</RadioGroup>
</LinearLayout>
下面是分享類,註釋都很清楚:
public class ShareUtil {
private static UMSocialService mController;
private static AlertDialog myDialog;
/**
* performShare(SHARE_MEDIA.WEIXIN);微信
* performShare(SHARE_MEDIA.WEIXIN_CIRCLE);微信朋友圈
* performShare(SHARE_MEDIA.SINA);微博
* @param context
* @param mShareTitle 分享標題
* @param mShareContent 分享內容
* @param umImage 分享圖片
* @param url 分享鏈接
* String mShareTitle = "XXXXAPP";
* String url = "XXXXAPP";
* String mShareContent = "我是分享內容";
* UMImage umImage = new UMImage(context, R.drawable.ic_launcher);
*/
public static void alertDialog(final Context context,String mShareTitle,String mShareContent,UMImage umImage,String url) {
initShare(context, mShareTitle, mShareContent, umImage,url);
myDialog = new AlertDialog.Builder(context).create();
myDialog.show();
myDialog.setCanceledOnTouchOutside(true);
myDialog.getWindow().setContentView(R.layout.activity_share_pop);
WindowManager.LayoutParams layoutParams = myDialog.getWindow()
.getAttributes();
layoutParams.width = LayoutParams.MATCH_PARENT;
layoutParams.height = LayoutParams.WRAP_CONTENT;
myDialog.getWindow().setAttributes(layoutParams);
myDialog.getWindow().setGravity(Gravity.BOTTOM);
myDialog.getWindow().setWindowAnimations(R.style.AnimationFade);
// 微信
myDialog.getWindow().findViewById(R.id.sharerb0)
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myDialog.dismiss();
performShare(context,SHARE_MEDIA.WEIXIN);
}
});
// 朋友圈
myDialog.getWindow().findViewById(R.id.sharerb1)
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myDialog.dismiss();
performShare(context,SHARE_MEDIA.WEIXIN_CIRCLE);
}
});
// 新浪
myDialog.getWindow().findViewById(R.id.sharerb2)
.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
myDialog.dismiss();
performShare(context,SHARE_MEDIA.SINA);
}
});
}
/**
* 初始化分享
* @param context
* @param mShareTitle
* @param mShareContent
* @param umImage
*/
private static void initShare(Context context,String mShareTitle,String mShareContent,UMImage umImage,String url){
mController = UMServiceFactory.getUMSocialService("com.umeng.share");
// 設置分享內容
mController.setShareContent(mShareContent);
//設置應用地址
mController.setAppWebSite(url);
// 設置分享圖片,參數2爲本地圖片的資源引用
mController.setShareMedia(umImage);
SocializeConfig socializeConfig = mController.getConfig();
socializeConfig.closeToast();
//修改這裏的id和secret
String appId = "xxxxxxxxxxxxxxxx";
String appSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
// 添加微信平臺
UMWXHandler wxHandler = new UMWXHandler(context,appId,appSecret);
wxHandler.addToSocialSDK();
// 添加微信朋友圈
UMWXHandler wxCircleHandler = new UMWXHandler(context,appId,appSecret);
wxCircleHandler.setToCircle(true);
wxCircleHandler.addToSocialSDK();
// 設置微信好友分享內容
WeiXinShareContent weixinContent = new WeiXinShareContent();
// 設置分享文字
weixinContent.setShareContent(mShareContent);
// 設置title
weixinContent.setTitle(mShareTitle);
// 設置分享內容跳轉URL
weixinContent.setTargetUrl(url);
// 設置分享圖片
weixinContent.setShareImage(umImage);
mController.setShareMedia(weixinContent);
// 設置微信朋友圈分享內容
CircleShareContent circleMedia = new CircleShareContent();
circleMedia.setShareContent(mShareContent);
// 設置朋友圈title
//客戶的需求分享到朋友圈的時候標題用內容
circleMedia.setTitle(mShareContent);
circleMedia.setShareImage(umImage);
circleMedia.setTargetUrl(url);
mController.setShareMedia(circleMedia);
// 新浪微博
SinaShareContent sinaContent = new SinaShareContent();
sinaContent.setShareContent(mShareContent + "[url="+url+"]"+url+"[/url]");
sinaContent.setTitle(mShareTitle);
sinaContent.setTargetUrl(url);
sinaContent.setShareImage(umImage);
mController.setShareMedia(sinaContent);
}
/**
* 分享
* performShare(SHARE_MEDIA.WEIXIN);微信
* performShare(SHARE_MEDIA.WEIXIN_CIRCLE);微信朋友圈
* performShare(SHARE_MEDIA.SINA);微博
* @param context
* @param platform
*/
private static void performShare(final Context context,SHARE_MEDIA platform) {
mController.postShare(context, platform, new SnsPostListener() {
@Override
public void onStart() {
}
@Override
public void onComplete(SHARE_MEDIA platform, int eCode, SocializeEntity entity) {
String showText = "";//platform.toString();
if (eCode == StatusCode.ST_CODE_SUCCESSED) {
showText += "分享成功";
} else {
showText += "分享失敗";
}
Toast.makeText(context, showText,Toast.LENGTH_LONG).show();
}
});
}
}
最後,調用
String mShareTitle = "XXXXAPP";
String url ="http://XXXXXXXXX" ;
String mShareContent = "分享內容";
UMImage umImage = new UMImage(context, R.drawable.ic_launcher);
ShareUtil.alertDialog(context, mShareTitle, mShareContent, umImage, url);