本帖记录一下友盟分享的步骤!
首先我们要去第三方平台申请分享时显示应用的icon、名称和对应开放平台设置 必要需要创建应用的平台为:微信、新浪、QQ、Facebook、Kakao、Linkein、Twitter。
签名查看可以直接在Terminal中查看
输入keytool -v -list -keystoreC:\Users\Administrator\Desktop\debug.jks (红色部分为签名文件的路径)
MD5就是签名(微信平台设置签名记得把 :去掉)
友盟分享分为两个版本一个是精简版(比如微信不支持微信支付)一个是完整版的(支持微信支付),根据项目的需求选择不同的SDK下载。因为在项目中只用到了分享,所以我使用的是精简版的,本文以微信、QQ、新浪分享为例。SDK下载地址 http://mobile.umeng.com/social?spm=0.0.0.0.eCto0U
下载完成解压
第一种方式直接把platform下的src和jar全部复制到自己的项目中,第二种方式直接使用友盟提供的工具jar(推荐使用),直接双击umeng_integrate_tool.jar
选择我们需要的平台点击OK,生成资源文件。
因为使用的是友盟提供的UI分享面板,需要把对应的资源文件和jar复制到项目中去,微信需要把包和类也复制到项目中去。
接下来在AndroidManifest中添加用的权限和Activity
<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.READ_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" />
<!-- 微信 --> <activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!-- QQ --><activityandroid:name="com.umeng.qq.tencent.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="tencent100424468" /></intent-filter>
</activity>
<!-- QQ --><activityandroid:name="com.umeng.qq.tencent.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid:name="com.umeng.socialize.editorpage.ShareActivity"android:excludeFromRecents="true"android:theme="@style/Theme.UMDefault" /><!-- 友盟key --><meta-dataandroid:name="UMENG_APPKEY"android:value="586c68055312dd78ab0008af" />接下来就是代码了,在Application中添加各平台中申请到的key
//各个平台的配置,建议放在全局Application或者程序入口 { PlatformConfig.setWeixin("wxb31ed3a79dd2723b", "d1f8d1c022522db5a0eec3844b71ee44"); PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); //豆瓣RENREN平台目前只能在服务器端配置 //新浪微博 /* PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad"); //易信 PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf"); PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO"); PlatformConfig.setAlipay("2015111700822536"); PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e"); PlatformConfig.setPinterest("1439206"); PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f"); PlatformConfig.setDing("dingoalmlnohc0wggfedpk"); PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J"); PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");*/ }初始化友盟和开启日志模式
@Override public void onCreate() { super.onCreate(); UMShareAPI.get(this); /*开启debug模式,方便定位错误,具体错误检查方式可以查看 http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式*/ Config.DEBUG = true; }在需要分享的页面中添加onActivityResult。
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** attention to this below ,must add this**/ UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }在使用shareaction的时候,调用withMedia可以设置一个UMImage,也就是分享图片,分享图片的构建有如下几种形式
UMImage image = new UMImage(MainActivity.this, "imageurl");//网络图片 UMImage image = new UMImage(MainActivity.this, file);//本地文件 UMImage image = new UMImage(MainActivity.this, R.drawable.xxx);//资源文件 UMImage image = new UMImage(MainActivity.this, bitmap);//bitmap文件 UMImage image = new UMImage(MainActivity.this, byte[]);//字节流
推荐使用网络图片和资源文件的方式,平台兼容性更高。 对于微信QQ的那个平台,分享的图片需要设置缩略图,缩略图的设置规则为UMImage image = new UMImage(this, R.drawable.image); image.setThumb(image);分享回调
private UMShareListener umShareListener = new UMShareListener() { @Override public void onResult(SHARE_MEDIA platform) { Log.d("plat", "platform" + platform); Toast.makeText(MainActivity.this, "分享成功", Toast.LENGTH_SHORT).show(); } @Override public void onError(SHARE_MEDIA platform, Throwable t) { Toast.makeText(MainActivity.this, "分享失败", Toast.LENGTH_SHORT).show(); if (t != null) { Log.d("throw", "throw:" + t.getMessage()); } } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(MainActivity.this, "分享取消", Toast.LENGTH_SHORT).show(); } };此方法就是打开分享面板
new ShareAction(MainActivity.this).withMedia(image).withText("内容").withTitle("标题").withTargetUrl("http://www.baidu.com") .setDisplayList(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,SHARE_MEDIA.QQ,SHARE_MEDIA.QZONE,SHARE_MEDIA.SINA ).setCallback(umShareListener).open();
效果图
友盟的分享面板确实不怎么好看,不喜欢的可以自定义。
第一次运行的时候发现微信分享失败,日志一直提示签名不正确,但是签名和后台的是一致的,问了客服,也查了资料发现还是不好使
最后重启手机,分享成功。
博客会持续更新和记录在项目中所遇到问题,大家多多支持!!!