下载SDK获得相应的jar包
配置Android Manifest XML
权限的添加
<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="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>
把key换成自己申请的
配置友盟key及三方key
public class App extends Application { { PlatformConfig.setWeixin( "wx967daebe835fbeac" , "5bb696d9ccd75a38c8a0bfe0675559b3" ); PlatformConfig.setQQZone( "100424468" , "c7394704798a158208a74ab60104f0ba" ); PlatformConfig.setSinaWeibo( "3921700954" , "04b48b094faeb16683c32669824ebdad" , "http://sns.whalecloud.com" ); }@Overridepublic void onCreate() { super.onCreate(); UMShareAPI.get(this);
Config.DEBUG="true"
} }
签名配置
混淆配置
-dontshrink-dontoptimize-dontwarn com.google.android.maps.**-dontwarn android.webkit.WebView-dontwarn com.umeng.**-dontwarn com.tencent.weibo.sdk.**-dontwarn com.facebook.**-keep public class javax.**-keep public class android.webkit.**-dontwarn android.support.v4.**-keep enum com.facebook.**-keepattributes Exceptions,InnerClasses,Signature-keepattributes *Annotation*-keepattributes SourceFile,LineNumberTable-keep public interface com.facebook.**-keep public interface com.tencent.**-keep public interface com.umeng.socialize.**-keep public interface com.umeng.socialize.sensor.**-keep public interface com.umeng.scrshot.**-keep public class com.umeng.socialize.* {*;}-keep class com.facebook.**-keep class com.facebook.** { *; }-keep class com.umeng.scrshot.**-keep public class com.tencent.** {*;}-keep class com.umeng.socialize.sensor.**-keep class com.umeng.socialize.handler.**-keep class com.umeng.socialize.handler.*-keep class com.umeng.weixin.handler.**-keep class com.umeng.weixin.handler.*-keep class com.umeng.qq.handler.**-keep class com.umeng.qq.handler.*-keep class UMMoreHandler {*;}-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}-keep class im.yixin.sdk.api.YXMessage {*;}-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData {*;}-keep class com.tencent.mm.sdk.** { *;}-keep class com.tencent.mm.opensdk.** { *;}-keep class com.tencent.wxop.** { *;}-keep class com.tencent.mm.sdk.** { *;}-dontwarn twitter4j.**-keep class twitter4j.** { *; }-keep class com.tencent.** {*;}-dontwarn com.tencent.**-keep class com.kakao.** {*;}-dontwarn com.kakao.**-keep public class com.umeng.com.umeng.soexample.R$* { public static final int *;}-keep public class com.linkedin.android.mobilesdk.R$* { public static final int *;}-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String);}-keep class com.tencent.open.TDialog$*-keep class com.tencent.open.TDialog$* {*;}-keep class com.tencent.open.PKDialog-keep class com.tencent.open.PKDialog {*;}-keep class com.tencent.open.PKDialog$*-keep class com.tencent.open.PKDialog$* {*;}-keep class com.umeng.socialize.impl.ImageImpl {*;}-keep class com.sina.** {*;}-dontwarn com.sina.**-keep class com.alipay.share.sdk.** { *;}-keepnames class * implements android.os.Parcelable { public static final ** CREATOR;}-keep class com.linkedin.** { *; }-keep class com.android.dingtalk.share.ddsharemodule.** { *; }-keepattributes Signature分享(带面板)
new ShareAction(MainActivity. this ) .withText( "hello" ) .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN) .setCallback(umShareListener) .open();分享(不带面板)
new ShareAction(MainActivity. this ).setPlatform(SHARE_MEDIA.QQ) //传入平台 .withText( "hello" ) //分享内容 .setCallback(umShareListener) //回调监听器 .share(); private UMShareListener shareListener = new UMShareListener() {
/**
* @descrption 分享开始的回调
* @param platform 平台类型
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @descrption 分享成功的回调
* @param platform 平台类型
*/
@Override
public void onResult(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享失败的回调
* @param platform 平台类型
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, Throwable t) {
Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();
}
/**
* @descrption 分享取消的回调
* @param platform 平台类型
*/
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show();
}
};
三方登录集成
获取用户资料授权
mShareAPI.getPlatformInfo(UserinfoActivity.
this
, SHARE_MEDIA.SINA, umAuthListener);
其中umAuthListener为授权回调,构建如下:
UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授权成功的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show(); } /** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(mContext, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(mContext, "取消了", Toast.LENGTH_LONG).show(); } };
QQ登陆可以直接使用,微博需要在微博开放平台创建应用,才可以使用