友盟第三方分享 QQ QQ空间 微信 新浪 及走过的坑

   这周刚上完新版本 新增了第三方登录和分享的功能,由于同事推荐就使用了友盟提供的分享和登录功能,处理时也碰到很多bug 现在抽个时间整理下。

  友盟分享  在百度一下有很多博客也有详细的介绍,我这里就不搞这些重复的了。

  友盟的登录在下一篇再分析,因为登录和分享毕竟不好放在同一个类去实现

我的个人建议 不要直接将SDK 直接按集成方法加入到项目里 这样很容易出很大的问题,先写一个自己所需要的功能的demo,然后封装好,再按配置集成到项目里,这样出错率会下降很多。虽然时间可能会有点多,但比一堆不知道什么问题的错误强。

  大家需要可以先参考别人的处理方法,但一定要去官网看集成方法和APi 这样就可以少走点弯路,这里提供一个感觉很好的关于这块的博客地址 友盟分享  

  由于我现在是最新的SDK 所以可能和别人写的代码不一样 但是SDK 都是方法改了 里面用法还是差不太多的。

  我的SDK版本 umeng_android_social_sdk_5.2.0_custom.zip

好现在先上demo代码

首先是MainActivity

package com.ffu365.android;

import java.util.HashMap;
import java.util.Map;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.ffu365.android.R;
import com.umeng.socialize.Config;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMAuthListener;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;


public class MainActivity extends Activity implements UMShareListener,
		OnClickListener {

	
	/*
	 * umneg SDK 版本 5.2.0  
	 * 
	 * 
	 */
	private UMShareAPI mShareAPI;
	// private UMSocialService mController;
	private Context context = MainActivity.this;

	
	
	
	
	
	
	UMImage image = new UMImage(this,
			"http://image.7pa.com/data/57a55cb2c9078.png");

	// 设置分享图片,参数2为本地图片的资源引用
	// UMImage image = new UMImage(MainActivity.this,
	// BitmapFactory.decodeResource(getResources(), R.drawable.image));

	// 设置分享图片,参数2为本地图片的路径(绝对路径)
	// UMImage image = new UMImage(MainActivity.this,
	// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));

	// 设置分享音乐 包括缩略图
	// UMusic music = new
	// UMusic("http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3");
	// music.setTitle("sdasdasd");
	// music.setThumb(new
	// UMImage(ShareActivity.this,"http://www.umeng.com/images/pic/social/chart_1.png"));

	// 设置分享视频
	// UMVideo video = new
	// UMVideo("http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html");

	final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[] { SHARE_MEDIA.WEIXIN,
			SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE,
			SHARE_MEDIA.SINA };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ProgressDialog dialog =  new ProgressDialog(this);
	    dialog.setTitle("授权中");
	    dialog.setMessage("正在加载···");
	    Config.dialog = dialog;
		
		com.umeng.socialize.utils.Log.LOG = true;
		XHLog.is_debug = true;
		mShareAPI = UMShareAPI.get(this);
		
		mShareBt = (Button) findViewById(R.id.share_bt);

		mShareBt.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				new ShareAction(MainActivity.this).setDisplayList(displaylist)
						.withText("andriod端测试")
						// app内容
						.withTitle("app分享第三方微信测试")
						.withTargetUrl("http://www.baidu.com")// 标题加 链接
						.withMedia(image).setCallback(MainActivity.this)//
						.open();
			}
		});

		

	}
	/**
	 * 分享的回调
	 */
	@Override
	public void onCancel(SHARE_MEDIA arg0) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "onCancel 取消", Toast.LENGTH_LONG).show();
	}

	@Override
	public void onError(SHARE_MEDIA arg0, Throwable arg1) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "onError 失败", Toast.LENGTH_LONG).show();
	}

	@Override
	public void onResult(SHARE_MEDIA arg0) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "onSucced 成功", Toast.LENGTH_LONG).show();

	}

这样回调还要实现下面这个方法

onActivityResult()
        @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get( this ).onActivityResult( requestCode, resultCode, data);
    }



这里要分析一下 在按官方文档集成后会有res文件中layout中 会有这个umeng_socialize_shareboard_item.xml 

它是与分享方法中open()相关的一个dirlog 

new ShareAction(MainActivity.this).setDisplayList(displaylist)
						.withText("andriod端测试")
						// app内容
						.withTitle("app分享第三方微信测试")
						.withTargetUrl("http://www.baidu.com")// 标题加 链接
						.withMedia(image).setCallback(MainActivity.this)//
						.open();
			}

如图 点击后会出现这样的布局



分享面板点击回调

使用setShareboardclickCallback() 可以进行分享面板不同按钮的点击回调,方便开发者进行特殊处理。

分享面板增加自定义按钮

如果需要对分享面板增加自定义的按钮,可以通过 ShareAction(this).addButton(String showword,String Keyword,String icon,String Grayicon,int index) 进行设置其中第一个参数是显示的名字,第二个参数是平台名称, 注意这两个参数需要先声明 ,第三个参数是按钮图标的图片名字,第四个按钮是置灰情况下按钮图标的图片名字, 注意图片直接写路径即可,不要.png等后缀 最后一个变量是数标(功能保留)。 对于自定义平台的监听需要使用上面提到的分享面板点击回调,如下:

private ShareBoardlistener shareBoardlistener = new  ShareBoardlistener() {

        @Override
        public void onclick(SnsPlatform snsPlatform,SHARE_MEDIA share_media) {
            if (share_media==null){
                if (snsPlatform.mKeyword.equals("11")){
                    Toast.makeText(ShareActivity.this,"add button success",Toast.LENGTH_LONG).show();
                }

            }
            else {
                new ShareAction(ShareActivity.this).setPlatform(share_media).setCallback(umShareListener)
                        .withText("多平台分享")
                        .share();
            }
        }
    };




但是如果你的需求不需要这样,那么我们查看API 会发现有另一个方法share(); 点击分享的图片直接去分享,没有dirlog选择,属于单个分享。

new ShareAction(MainActivity.this).setDisplayList(displaylist)
						.withText("andriod端测试")
						// app内容
						.withTitle("app分享第三方微信测试")
						.withTargetUrl("http://www.baidu.com")// 标题加 链接
						.withMedia(image).setCallback(MainActivity.this).share(); }

 

如果你的需求需要自定义分享的dirlog 那么去修改XML 文件的布局就可以。(由于我这边没有这样的需求所以没有就直接用友盟提供的XML)

接下来我们在BaseApplication.java 进行配置

package com.ffu365.android;

import android.app.Application;

import com.umeng.socialize.PlatformConfig;

public class BaseApplication extends Application {

	@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();

		//
		 
		//测试
		//你在对应第三方平台申请的appkey 密钥等
		PlatformConfig.setQQZone("1105511711", "SozQd64v1Y51Ct6r");
		PlatformConfig.setSinaWeibo("319062931", "a7b4f95381abbf747bxxx6910c963ae8");
		PlatformConfig.setWeixin("wx9509a9xxxac2336a", "60022407xxxx5719a504ca737fdb4db2");
	}
}

这里要注意的是我们在第三方平台申请的微博和微信的需要包名的签名 用签名工具就可以 友盟有提供 微信申请apk 要至少一周时间审核。




好,接下来因为微信分享和微博分享需要两个回调类

微信的回调类 com.ffu365.android.wxapi.WXEntryActivity  你的注册第三方对应的包名 .wxapi.WXEntryActivity

微博的回调类 com.ffu365.android.WBShareActivity  你的注册第三方对应的包名 .WBShareActivity


 微信 WXEntryActivity

package com.ffu365.android.wxapi;

import android.os.Bundle;

import com.umeng.socialize.weixin.view.WXCallbackActivity;

public class WXEntryActivity extends WXCallbackActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}
}

新浪微博 友盟官网

package com.umeng.soexample;

import com.umeng.socialize.media.WBShareCallBackActivity;

/**
 * 
 */
public class WBShareActivity extends WBShareCallBackActivity{
}


我的微博回调类(效果是一样的,但是我加finish() 是因为在微博登录回调那里关掉回调授权页面的处理(授权成功回调页面不关闭),不影响,按情况来推荐先用官网的,不行再试试我的)

package com.ffu365.android;

import android.app.Activity;
import android.os.Bundle;

public class WBShareActivity extends Activity{
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		finish();
	}

}


现在贴配置文件的代码 请根据你自己的项目去修改 跟这个官网集成步骤就不会出什么错

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ffu365.android"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

       <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
         android:name="com.ffu365.android.BaseApplication"
        android:theme="@android:style/Theme.Light.NoTitleBar" >
        <activity
            android:name="com.ffu365.android.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
   
    
            
       
        
        
        <activity
            android:name="com.umeng.socialize.editorpage.ShareActivity"
            android:excludeFromRecents="true"
            android:theme="@style/Theme.UMDefault" />
        
 <!-- 这个是配置成我们自己在友盟上面申请的 5576840067e58eab92000363 -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="579f0a4367e58e31d100143e" >
        </meta-data> 
        
        <!-- 新浪微博 -->
        <activity
            android:name="com.ffu365.android.WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity> 
        
	<activity
            android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
            android:configChanges="keyboardHidden|orientation"
            android:windowSoftInputMode="adjustResize"
            android:exported="false" >
        </activity>
        <service 
            android:name="com.sina.weibo.sdk.net.DownloadService"
            android:exported="false">
        </service>
        
		<!--微信  -->
        <activity
            android:name="com.umeng.soexample.wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        
  
   
   	<!--  QQ-->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="tencent1105511711" />
            </intent-filter>
        </activity>
        
        
        <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        
        <activity
            android:name="com.ffu365.android.wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
         </application>

</manifest>


另外 新浪微博分享回调页面配置问题

新浪微博分享,web页面显示:你所访问的站点在微博的认证失败,请稍后再试。如有疑问,请联系XX。(error:redirect_uri_mismatch) 。这种问题往往发生在新提交了移动应用但未审核的情况下

解决方法:需要在微博开放平台的应用基本信息中配置安全域名:sns.whalecloud.com。同时在高级信息中配置OAuth2.0 授权设置:

  • 授权回调页:

  • http://sns.whalecloud.com/sina2/callback

  • 取消授权回调页:

  • http://sns.whalecloud.com/sina2/callback





然后就是libs 里面的配置 直接上图 






这个有一个值得注意的问题

上面这写cpu配置so文件中是新浪微博需要的文件   一般选择一个就好

在我的项目里armeabi-v7a 这个不能放入项目里 程序直接崩或黑屏,查找原因是和百度地图产生了冲突。我当时也找不到解决办法就直接放弃加载这个so文件了  希望有遇到这样的问题有解决办法的朋友可以联系我(评论告诉也好)。




SDK里res 文件最好都导进去,然后在按需求修改


那么我们这个demo 算是结束了


那么我们顺便在这里把分享方法封装成一个工具类 ShareUtil

import android.app.Activity;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.widget.Toast;

import com.qpbox.R;
import com.qpp.http.XHLog;
import com.umeng.socialize.ShareAction;
import com.umeng.socialize.UMShareListener;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage;

public class Shareutil {
	
	
	// 设置分享网络url "http://www.umeng.com/images/pic/social/integrated_3.png"
//		UMImage image = new UMImage(this,
//				"http://image.7pa.com/data/57a55cb2c9078.png");

		// 设置分享图片,参数2为本地图片的资源引用
		// UMImage image = new UMImage(MainActivity.this,
		// BitmapFactory.decodeResource(getResources(), R.drawable.image));

		// 设置分享图片,参数2为本地图片的路径(绝对路径)
		// UMImage image = new UMImage(MainActivity.this,
		// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));

		// 设置分享音乐 包括缩略图
		// UMusic music = new
		// UMusic("http://music.huoxing.com/upload/20130330/1364651263157_1085.mp3");
		// music.setTitle("sdasdasd");
		// music.setThumb(new
		// UMImage(ShareActivity.this,"http://www.umeng.com/images/pic/social/chart_1.png"));

		// 设置分享视频
		// UMVideo video = new
		// UMVideo("http://video.sina.com.cn/p/sports/cba/v/2013-10-22/144463050817.html");

	
	
	static final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[] { SHARE_MEDIA.WEIXIN,
			SHARE_MEDIA.WEIXIN_CIRCLE, SHARE_MEDIA.QQ,
			SHARE_MEDIA.SINA };
	
	/**
	 * 
	 * 固定微信分享
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareWX(final Context context, String title,
			String content, String url,String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
		.setDisplayList(SHARE_MEDIA.WEIXIN_CIRCLE)
		.setCallback(new UMShareListener() {
			@Override
			public void onResult(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onError(SHARE_MEDIA arg0, Throwable arg1) {
				Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onCancel(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
			}
		}).withTitle(title)
		.withMedia(image)
		.withTargetUrl(url)
		.withText(content)
		.share();
	}
	/**
	 * 
	 * 固定微信朋友圈分享
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareWXF(final Context context, String title,
			String content, String url,String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
		.setDisplayList(SHARE_MEDIA.WEIXIN)
		.setCallback(new UMShareListener() {
			@Override
			public void onResult(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onError(SHARE_MEDIA arg0, Throwable arg1) {
				Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onCancel(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
			}
		})
		.withTitle(title)
		.withMedia(image)
		.withTargetUrl(url)
		.withText(content)
		.share();
	}
	
	/**
	 * 
	 * 固定QQ分享
	 * 
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareQQ(final Context context, String title,
			String content, String url,String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
		.setDisplayList(SHARE_MEDIA.QQ)
		.setCallback(new UMShareListener() {
			@Override
			public void onResult(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onError(SHARE_MEDIA arg0, Throwable arg1) {
				Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onCancel(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
			}
		}).withTitle(title)
		.withMedia(image)
		.withTargetUrl(url)
		.withText(content)
		.share();
	}
	
	/**
	 * 
	 * 固定QQ空间分享
	 * 
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareQQZ(final Context context, String title,
			String content,String url, String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
		.setDisplayList(SHARE_MEDIA.QZONE)
		.setCallback(new UMShareListener() {
			@Override
			public void onResult(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onError(SHARE_MEDIA arg0, Throwable arg1) {
				Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onCancel(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
			}
		}).withTitle(title)
		.withMedia(image)
		.withTargetUrl(url)
		.withText(content)
		.share();
	}
	/**
	 * 
	 * 固定新浪微博分享
	 * 
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareSina(final Context context, String title,
			String content,String url, String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
		.setDisplayList(SHARE_MEDIA.SINA)
		.setCallback(new UMShareListener() {
			@Override
			public void onResult(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onError(SHARE_MEDIA arg0, Throwable arg1) {
				Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
			}

			@Override
			public void onCancel(SHARE_MEDIA arg0) {
				Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
			}
		}).withTitle(title)
		.withMedia(image)
		.withTargetUrl(url)
		.withText(content)
		.share();
	}
	
	/**
	 * Win 纯图片分享
	 * @param context
	 * @param title
	 * @param content
	 * @param imageUrl
	 */
	public static void showShareImg(final Context context, String title,
			String content, String imageUrl) {
		
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
				.setDisplayList(displaylist)
				.setCallback(new UMShareListener() {
					@Override
					public void onResult(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onError(SHARE_MEDIA arg0, Throwable arg1) {
						Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onCancel(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
					}
				}).withTitle(title)
				.withMedia(image)
				.withText(content)
				.open();
	}
	
	/**
	 * 只分享内容
	 * @param context
	 * @param content
	 * @param url
	 * @param imageUrl
	 */
	public static void showShareContents(final Context context, 
			String content, String url, String imageUrl) {
		if("".equals(url)){
			url="http://ads.7pa.com/kefu/7pa/";
		}
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
				.setDisplayList(displaylist)
				.setCallback(new UMShareListener() {
					@Override
					public void onResult(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onError(SHARE_MEDIA arg0, Throwable arg1) {
						Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onCancel(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
					}
				})
				.withMedia(image)
				.withTargetUrl(url)
				.withText(content)
				.open();
	}
	
	/**
	 * Win 总分享
	 * @param context
	 * @param title
	 * @param content
	 * @param url
	 * @param imageUrl
	 */
	public static void showShare(final Context context, String title,
			String content, String url, String imageUrl) {
		UMImage image = new UMImage(context,imageUrl);
		new ShareAction((Activity) context)
				.setDisplayList(displaylist)
				.setCallback(new UMShareListener() {
					@Override
					public void onResult(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onError(SHARE_MEDIA arg0, Throwable arg1) {
						Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onCancel(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
					}
				})
				.withTitle(title)
				.withText(content)
				.withMedia(image)
				.withTargetUrl(url)
				.open();
	}
	/**
	 * 分享盒子本地
	 * @param context
	 * @param title
	 * @param content
	 * @param url
	 * @param imageUrl
	 */
	public static void showShareLocal(final Context context, String title,
			String content, String url) {
		//UMImage image = new UMImage(context,src);
		UMImage image = new UMImage(context,
		 BitmapFactory.decodeResource(context.getResources(), R.drawable.ico_qpp));
		new ShareAction((Activity) context)
				.setDisplayList(displaylist)
				.setCallback(new UMShareListener() {
					@Override
					public void onResult(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onError(SHARE_MEDIA arg0, Throwable arg1) {
						Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();
					}

					@Override
					public void onCancel(SHARE_MEDIA arg0) {
						Toast.makeText(context, "分享取消", Toast.LENGTH_LONG).show();
					}
				})
				.withTitle(title)
				.withText(content)
				.withMedia(image)
				.withTargetUrl(url)
				.open();
	}

}

这个就详细说明 大家看代码就都知道了


这里说说一些坑爹的东西 (转一些前人的吐槽) 转载地址 http://blog.csdn.net/uxyheaven/article/details/40426465

title属性的效果不一致
qq空间和微信不设置标题,标题就默认显示内容了.就是说内容重复显示了2次
微信朋友圈如果设置了标题,那么内容就不显示了
浪新微博没这个功能

ui不合适

产品看了默认的ui,手机上勉强能接受,可这个ui放到ipad上确实有些丑,这样就得写一套界面了,10分钟他妹啊.后来见到效果图的时候发现手机的下面多了一个取消按钮,产品觉得现在还是有小白用户不知道点空白区域可以取消.手机界面的效果图和平板界面的效果图还不一样,好吧,又多一套.

纯文字展示效果不一样

发给微信好友的时候,不能跳转到中间页.

解决方案:需求改成了纯文字的话就加个默认图片

视频展示效果不一样

又是微信,发视频的分享时,直接点击就播放了,不能跳转到中间页面.浪新微博则是有些视频只显示一个url,点击就下载了.

解决方案:需求改成了视频分享当图片分享,发一个视频预览图出去

跳转链接的设置不一样

微信和qq的需要每次都设置,浪新的竟然没这个设置.

解决方案:qq和微信在发出去的时候都单独设置跳转链接,浪新则是吧链接附加在文本后面,浪新微博还有个长度限制,过长的文本得剪短一些.


 最后

 你在demo运行得很正常,但是一添加到项目里就很多问题


你可以百度一下,或者去友盟官网的论坛看看那些帖子 希望会对你有帮助 (顺便吐槽论坛发了几个我碰到的问题没人鸟我,实在不行就打电话问客服吧 ) 论坛地址  http://bbs.umeng.com/forum.php?mod=forumdisplay&fid=37&filter=typeid&typeid=12


下一篇 我将对第三方登录处理和把分享中对应的dirlog 怎么去自定义一个更好的,因为官方提供是系统的太丑了


谢谢 ,我是一个新人。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值