这周刚上完新版本 新增了第三方登录和分享的功能,由于同事推荐就使用了友盟提供的分享和登录功能,处理时也碰到很多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 };@Overrideprotected 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() {@Overridepublic 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();}});}/*** 分享的回调*/@Overridepublic void onCancel(SHARE_MEDIA arg0) {// TODO Auto-generated method stubToast.makeText(this, "onCancel 取消", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {// TODO Auto-generated method stubToast.makeText(this, "onError 失败", Toast.LENGTH_LONG).show();}@Overridepublic void onResult(SHARE_MEDIA arg0) {// TODO Auto-generated method stubToast.makeText(this, "onSucced 成功", Toast.LENGTH_LONG).show();}

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

onActivityResult()@Overrideprotected 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() {@Overridepublic 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 {@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.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 {@Overrideprotected 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{@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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-sdkandroid: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" /><applicationandroid: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" ><activityandroid: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><activityandroid:name="com.umeng.socialize.editorpage.ShareActivity"android:excludeFromRecents="true"android:theme="@style/Theme.UMDefault" /><!-- 这个是配置成我们自己在友盟上面申请的 5576840067e58eab92000363 --><meta-dataandroid:name="UMENG_APPKEY"android:value="579f0a4367e58e31d100143e" ></meta-data> <!-- 新浪微博 --><activityandroid: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> <activityandroid: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><!--微信  --><activityandroid: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--><activityandroid: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><activityandroid:name="com.tencent.connect.common.AssistActivity"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid: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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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() {@Overridepublic void onResult(SHARE_MEDIA arg0) {Toast.makeText(context, "分享成功", Toast.LENGTH_LONG).show();}@Overridepublic void onError(SHARE_MEDIA arg0, Throwable arg1) {Toast.makeText(context, "分享失败", Toast.LENGTH_LONG).show();}@Overridepublic 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 怎么去自定义一个更好的,因为官方提供是系统的太丑了

谢谢 ,我是一个新人。

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

  1. 友盟第三方登录(QQ登录)

    第一步打开友盟官网注册一个账号,登录如下图进行操作点击个人中心 进入下一个界面点击管理创建一个应用生成AppKey:如下图 返回首页点击SDK与文档点击进行第三方登录集成点击右边的SDK下载选择你需要 ...

  2. 3分钟,实现友盟第三方分享与登陆-- -一键分享

    博客是作者近期实现第三方登陆.分享时的记录,采用的第三方平台是友盟社会化组件. 希望可以通过这个博客让读者快速集成好.并且实现第三方登陆.分享功能.     (基本上Demo实现的功能) 众所周知,实 ...

  3. android 友盟原生分享之QQ分享失败2004

    错误环境: 2004 错误信息:分享内容不合法----[SQ10004]QQ图片存储失败,请检查图片或者检查是否有读写权限 错误分析: 图片!图片!图片!图片! 分享的时候哪里 用图片??? 看代码: ...

  4. 友盟第三方登录精简版QQ遇到的坑

    这几天在项目中集成了友盟第三方登录,完成以后微信和微博基本都没什么问题,只有QQ遇到的问题比较烦人.具体的集成步骤我不在此赘述,官方文档上有,而且已经有不少介绍的很详细的文章.个人遇到问题可能不同,此 ...

  5. 集成友盟第三方实现QQ微信登录遇到的坑

    最近项目集成友盟第三方实现QQ微信登录,在集成实现过程中遇到了一些问题,也对这些问题提出一些自己的解决办法: 集成的过程不就提了,直接上问题: 一.微信登录提示"授权失败,请查看log&qu ...

  6. 分享QQ、微信 好友 ,空间、 新浪 的三种方式(验证通过)

    请大家多多指教,这个版本会不断的更新,完善,谢谢大家的支持! 感谢这个群部门大神的 分享QQ.微信  好友 ,空间. 新浪   的两种方式 一.不经过第三方sdk直接调用系统自带的分享       1 ...

  7. iOS之友盟简单分享(第三方)及sso授权问题

    一.友盟分享简单集成步骤: 1.注册友盟账号,申请友盟Appkey 2.下载并安装SDK 注意: 1>由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ.微信AppID之后调用 ...

  8. 友盟社会化分享+第三方登录 2022.03.28 最新版

    主要通过集成友盟SDK+QQ/微信/新浪SDK实现分享和微信登录功能 1.build.gradle 配置 2.app 文件夹下build.gradle添加以下内容 3.androidManifest. ...

  9. 友盟社会化分享之自定义内容分享到微信,微博,豆瓣

    以前移动端要做分享的时候一般是两种方法,要么使用Intent调用安卓系统自带的分享功能接口,这是最简单快捷的方法, 要么就自己去QQ微信和各个微博等社交网站申请开发者ID和key,然后在看他们的官方文 ...

  10. 微信 支付宝支付 友盟登录分享 统计

    概述 GZPayAndShareDemo主要集成了支付宝 微信 支付功能,友盟社会化分享 统计!从此支付 分享 统计 不再是梦! 详细 代码下载:http://www.demodashi.com/de ...

最新文章

  1. 2021年浅谈多任务学习
  2. django 不用自带的mysql_python笔记二 django自带后台管理系统、模版渲染以及使用mysql数据库...
  3. 《你不知道的JavaScript》-- 精读(五)
  4. PHP学习笔记--面向对象
  5. 【C#】VS2017 winform 打包
  6. 音视频技术开发周刊 | 134
  7. arm qt5 iconv 问题
  8. 清理日志文件尝试有效哦
  9. ue4模型为啥这么亮_坐好了,仔细听,资深建模师介绍UE4视口中的可视化模式(一)...
  10. Python发布自己的模块到Pypi
  11. 微信小程序之----audio音频播放
  12. SQL注入双引号报错注入
  13. Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
  14. matplotlib中cmap_定制matplotlib cmap
  15. opencv以图片名称为索引顺序读取多张图片
  16. android免root读写u盘最新方法,支持安卓Q+
  17. ORA-00911: invalid character 错误解决
  18. CSDN知名安卓博主
  19. 切换windows系统输入法的中英文,可以忽视是哪种打字法
  20. 几种常见波形的傅里叶级数展开式

热门文章

  1. win7找不到网络共享计算机,电脑访问网络共享提示“找不到网络路径”怎么办...
  2. 五、Sql Server 基础培训《进度5-数据类型(知识点+实际操作)》
  3. oracle追加imp,imp倒入的数据是追加,而不是替换,需要什么参数?
  4. 征途mysql启动不了_征途单机版架设中场景服务器启动失败?这是为什么?
  5. 中华人民共和国消费者权益保护法
  6. access有效性规则不为空值_Access 有效性规则/验证规则
  7. linux 翻录cd,Linux下一个CD翻录 创CUE 压缩flac攻略
  8. Maven的学习与2022IDEA创建Maven的web项目的教程(这个比上一期更“啰嗦哦~,前面不想删了,整体再来一遍”)
  9. sudo报错及在linux上启动jar包时报错java.net.UnknownHostException
  10. java声卡录音_win10下程序无法录音或使用麦克风