集成【友盟+】SDK以前,您首先須要到 【友盟+】官網註冊而且添加新應用,得到Appkey。android
一、填寫應用基本信息,獲取AppKeyapi
首先添加新應用,輸入應用名和選擇平臺信息,選擇應用類別,點擊提交冰獲取應用appKey,獲得Android 惟一Appkey微信
二、下載SDK並去集成app
找到 https://developer.umeng.com/sdk/android界面,選擇社會化分享 SDK,,點擊設置,選擇須要分享的平臺,點擊下載,下載解壓後,將common文件夾下的文件夾拷貝到項目中,再將share文件夾下的main文件夾以及platforms(選擇你想使用的平臺便可)和shareboard文件夾下對應的資源文件和jar放入你的工程。ide
三、添加回調Activitygradle
在包名目錄下建立wxapi文件夾,新建一個名爲WXEntryActivity
的activity繼承WXCallbackActivity
。ui
與微信類似,支付寶須要在包名目錄下建立apshare文件夾,而後創建一個ShareEntryActivity的類,繼承ShareCallbackActivity。this
QQ與新浪不須要添加Activity,但須要在使用QQ分享或者受權的Activity中,添加spa
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }
注意onActivityResult
不可在fragment中實現,若是在fragment中調用登陸或分享,須要在fragment依賴的Activity中實現code
四、配置Android Manifest XML
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android: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="tencentappkey" /> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/>
五、權限添加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
若是須要使用QQ純圖分享或避免其它平臺純圖分享的時候圖片不被壓縮,能夠增長如下權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
請查看你的build.gradle
文件,若是 targetSdkVersion
小於或等於22,能夠忽略這一步,若是大於或等於23,須要作權限的動態申請:
其中123是requestcode,能夠根據這個code判斷,用戶是否贊成了受權。若是沒有贊成,能夠根據回調進行相應處理:
@Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { }
添加讀寫文件的權限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
if(Build.VERSION.SDK_INT>=23){ String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,
Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,
Manifest.permission.WRITE_APN_SETTINGS}; ActivityCompat.requestPermissions(this,mPermissionList,123); }
六、初始化設置
初始化須要在您的Application中調用咱們的初始化接口:
PlatformConfig.setWeixin("appId", "appkey"); PlatformConfig.setQQZone("appId", "appkey"); // 一些分享配置 UMShareConfig config = new UMShareConfig(); config.isOpenShareEditActivity(true); config.isNeedAuthOnGetUserInfo(true); config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO); UMShareAPI.get(getApplicationContext()).setShareConfig(config);
友盟分享分爲兩種形式:
打開分享面板的代碼以下:
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();
其中umShareListener爲回調監聽,構建以下:
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(); } };
其他的能夠參照友盟文檔
https://developer.umeng.com/docs/66632/detail/66639