友盟 第三方分享

集成準備

獲取Appkey

集成【友盟+】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繼承WXCallbackActivityui

支付寶

與微信類似,支付寶須要在包名目錄下建立apshare文件夾,而後創建一個ShareEntryActivity的類,繼承ShareCallbackActivity。this

QQ與新浪

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" />
  • 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"/>

 

五、權限添加

<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);

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

相關文章
相關標籤/搜索