1、拷贝jar及res(精简版(新版))
umeng_social_api.jar
umeng_social_net.jar
umeng_social_shareboard.jar(可选,如果没有使用分享面板可以不使用)
SocialSDK_QQ_Simplify.jar
SocialSDK_WeChat_Simplify.jar
2.添加对应的回调Activity
使用微信分享或者登陆功能
在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity
的activity继承WXCallbackActivity
。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)
3.修改AndroidManiFest
首先需要添加权限:
<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.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
然后加入sdk中需要的Activity:
微信:
<activity
android:name=".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.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>
<activity
android:name="com.umeng.qq.tencent.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
添加友盟appkey
<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >
</meta-data>
然后增加签名文件的密码:(这部分没有加)
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
然后在buildTypes中将这个signingConfigs配置进去,如下图所示:
签名文件如果不加,部分平台的授权会受到影响。
4.配置各个平台的appkey建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name=".App"
android:theme="@style/AppTheme">
在application文件中配置三方平台的appkey:
这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置
public class App extends Application{
{
initUmeng();
}
}
//友盟初始化
private void initUmeng(){
//开启debug模式,方便定位错误,具体错误检查方式可以查看http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式
Config.DEBUG = true;
UMShareAPI.get(this);
//初始化第三方分享配置;
PlatformConfig.setWeixin("wx17348e9f2e185ec3", "3f2efe928a33b500d9aaab7aee80c815");
PlatformConfig.setQQZone("1104712187", "9PQptL6L6feRaKcm");
}
在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:
5.分享
new ShareAction(act) .setDisplayList(SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE) .setShareboardclickCallback(new ShareBoardlistener() { @Override public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) { UMWeb web = new UMWeb(targetUrl); web.setTitle(title); web.setDescription(description); web.setThumb(new UMImage(act, UMImageUrl)); new ShareAction(act).withMedia(web) .setPlatform(share_media) .setCallback(new UMShareListener() { @Override public void onStart(SHARE_MEDIA share_media) { Log.e("share", "onStart"); } @Override public void onResult(SHARE_MEDIA share_media) { Log.e("share", "onResult"); } @Override public void onError(SHARE_MEDIA share_media, Throwable throwable) { Log.e("share", "onError"); } @Override public void onCancel(SHARE_MEDIA share_media) { Log.e("share", "onCancel"); } }).share(); } }) .open();
onActivityResult实现方法如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
6.授权
获取用户信息
public void doOauth(SHARE_MEDIA platform) { UMShareAPI.get(activity).doOauthVerify(activity, platform, authListener); }
private UMAuthListener authListener = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { loading.setVisibility(View.VISIBLE); } @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { loading.setVisibility(View.GONE); UMShareAPI.get(activity).getPlatformInfo(activity, platform, authListener1); // Toast.makeText(activity, "成功了", Toast.LENGTH_LONG).show(); } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { loading.setVisibility(View.GONE); // Toast.makeText(activity, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { loading.setVisibility(View.GONE); // Toast.makeText(activity, "取消了", Toast.LENGTH_LONG).show(); } }; private UMAuthListener authListener1 = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { } @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { String temp = ""; for (String key : data.keySet()) { temp = temp + key + " : " + data.get(key) + "\n"; } try { if(i == 1) { JSONObject jsonObject = new JSONObject(); jsonObject.put("driver_id", 1); jsonObject.put("driver_name", "oauth_qq"); jsonObject.put("open_id", data.get("openid")); jsonObject.put("union_id", data.get("unionid")); jsonObject.put("nick_name", data.get("name")); jsonObject.put("email", data.get("msg")); if (data.get("gender").equals("女")) { jsonObject.put("gender", 2); } else if (data.get("gender").equals("男")) { jsonObject.put("gender", 1); } else { jsonObject.put("gender", 0); } jsonObject.put("province", data.get("province")); jsonObject.put("city", data.get("city")); jsonObject.put("avatar_url", data.get("iconurl")); jsonObject.put("auth", data.get("accessToken")); String jsonStr = jsonObject.toString(); //获取第三方平台账号信息 Message msg1 = Message.obtain(); msg1.what = 0; Bundle bundle = new Bundle(); bundle.putString("jsonstr", jsonStr); msg1.setData(bundle); handler.sendMessage(msg1); }else if(i==2){ JSONObject jsonObject = new JSONObject(); jsonObject.put("driver_id", 2); jsonObject.put("driver_name", "oauth_wechat"); jsonObject.put("open_id", data.get("openid")); jsonObject.put("union_id", data.get("unionid")); jsonObject.put("nick_name", data.get("name")); jsonObject.put("email", ""); if (data.get("gender").equals("女")) { jsonObject.put("gender", 2); } else if (data.get("gender").equals("男")) { jsonObject.put("gender", 1); } else { jsonObject.put("gender", 0); } jsonObject.put("province", data.get("province")); jsonObject.put("city", data.get("city")); jsonObject.put("avatar_url", data.get("iconurl")); jsonObject.put("auth", data.get("access_token")); String jsonStr = jsonObject.toString(); //获取第三方平台账号信息 Message msg1 = Message.obtain(); msg1.what = 1; Bundle bundle = new Bundle(); bundle.putString("jsonstr", jsonStr); msg1.setData(bundle); handler.sendMessage(msg1); } } catch (JSONException e) { } Log.e("qqOauth", temp); } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { } @Override public void onCancel(SHARE_MEDIA platform, int action) { } };
onActivityResult实现方法如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
删除授权
public void deleteOauth(SHARE_MEDIA platform) { UMShareAPI.get(activity).deleteOauth(activity, platform, delauth); }
private UMAuthListener delauth = new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { loading.setVisibility(View.VISIBLE); } @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { loading.setVisibility(View.GONE); // Toast.makeText(activity, "成功了", Toast.LENGTH_LONG).show(); } @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { loading.setVisibility(View.GONE); // Toast.makeText(activity, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancel(SHARE_MEDIA platform, int action) { loading.setVisibility(View.GONE); // Toast.makeText(activity, "取消了", Toast.LENGTH_LONG).show(); } };