- 注册友盟账号——个人中心——U_Share(立即使用)——添加新应用
- 开发者中心——U_Share的android集成文档
- 按照文档先把jar包及所需资源文件都拷进去
- 在微信开放平台注册账号,创建应用,设置正确的签名
## 代码写法 ##
1.manifests.xml中添加BaseApp
<!-- 友盟 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<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" />
<application
android:name=".BaseApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
>
<!-- =======================友盟==================================== -->
<meta-data
android:name="UMENG_APPKEY"
android:value="59a8dc418f4a9*******">
</meta-data>
<!-- 新浪 -->
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
<!-- 微信登录回调 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait"/>
<!-- 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:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<!-- =======================友盟end==================================== -->
2.BaseApp.java中注册UMShareAPI
public class BaseApp extends Application {
private static BaseApp mApp;
public static BaseApp getInstance() {
return mApp;
}
@Override
public void onCreate() {
super.onCreate();
//开启debug模式,方便定位错误,正式发布,请关闭该模式
Config.DEBUG = false;
//每次用户第三方登录都需要重新授权
UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(this).setShareConfig(config);
mApp = this;
}
//各个平台配置入口
{
PlatformConfig.setWeixin("wxb8b25fb968*******","04adc84a927951fa0c44336*******");
PlatformConfig.setQQZone("1106*******","AedMzHvzd*******Z");
PlatformConfig.setSinaWeibo("220551*******","542*******dd745793cc1602d9f*******","https://api.weibo.com/oauth2/default.html");
}
}
3.在登录的地方调用
UMShareAPI umShareAPI = UMShareAPI.get(mContext);
//登录微信调用
umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.WEIXIN, authListener);
break;
case R.id.weibo:
umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.SINA, authListener);
break;
case R.id.qq:
umShareAPI.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener);
break;
//第三方登录
UMAuthListener authListener = new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
showProgressDialog();
}
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
dismissProgressDialog();
if (platform == SHARE_MEDIA.WEIXIN) {
weixinopenid = data.get("openid");
wxName = data.get("screen_name");
wxGender = data.get("gender");
profile_image_url = data.get("profile_image_url");
if (weixinopenid != null)
weixinLogin(weixinopenid);
} else if (platform == SHARE_MEDIA.QQ) {
weixinopenid = data.get("uid");
wxName = data.get("name");
wxGender = data.get("gender");
profile_image_url = data.get("iconurl");
if (weixinopenid != null)
qqLogin(weixinopenid);
} else if (platform == SHARE_MEDIA.SINA) {
weixinopenid = data.get("uid");
wxName = data.get("name");
wxGender = data.get("gender");
profile_image_url = data.get("iconurl");
if (weixinopenid != null)
weiboLogin(weixinopenid);
}
SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_id, weixinopenid);
SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_name, wxName);
SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_gender, wxGender);
SpUtil.saveSpString(Constant.SpConstants.USER_INFO, Constant.SpConstants.Third_url, profile_image_url);
}
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
dismissProgressDialog();
Log.i("umeng", "openid: " + t.getMessage());
Toast.makeText(mContext, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
}
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
dismissProgressDialog();
Toast.makeText(mContext, "已取消", Toast.LENGTH_LONG).show();
}
};
//文档里说这段代码一定要写的,加载要使用微信登录的activity里
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
注:微博需要在测试信息里设置测试账号。半个小时生效