集成准備
獲取Appkey
集成【友盟+】SDK之前,您首先需要到 【友盟+】官網注冊並且添加新應用,獲得Appkey。
1、填寫應用基本信息,獲取AppKey
首先添加新應用,輸入應用名和選擇平台信息,選擇應用類別,點擊提交冰獲取應用appKey,得到Android 唯一Appkey
2、下載SDK並去集成
找到 https://developer.umeng.com/sdk/android界面,選擇社會化分享 SDK,,點擊設置,選擇需要分享的平台,點擊下載,下載解壓后,將common文件夾下的文件夾拷貝到項目中,再將share文件夾下的main文件夾以及platforms(選擇你想使用的平台即可)和shareboard文件夾下對應的資源文件和jar放入你的工程。
3、添加回調Activity
微信
在包名目錄下創建wxapi文件夾,新建一個名為WXEntryActivity
的activity繼承WXCallbackActivity
。
支付寶
與微信相似,支付寶需要在包名目錄下創建apshare文件夾,然后建立一個ShareEntryActivity的類,繼承ShareCallbackActivity。
QQ與新浪
QQ與新浪不需要添加Activity,但需要在使用QQ分享或者授權的Activity中,添加
@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中實現
4、配置Android Manifest XML
- 微信:
<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
- qq(請注意將我們的qq appkey替換成您自己的qq appkey):
<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"/>
5、權限添加
<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); }
6、初始化設置
初始化需要在您的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);
U-Share基礎功能
分享
友盟分享分為兩種形式:
- 使用分享面板的分享,用戶可以調用我們的打開分享面板的方法,點擊分享面板的對應平台進行分享。
- 不使用分享面板的分享,用戶可以自己寫分享按鈕,或者觸發事件,然后調用我們的分享方法,進行分享。簡而言之,直接分享就是在用戶自己的界面組件中插入分享行為,分享面板是打開我們寫好的一個界面組件,根據點擊事件進行分享。
分享(帶面板)
打開分享面板的代碼如下:
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