友盟多平臺分享(有用的實戰工具)

友盟官方文檔
http://dev.umeng.com/social/android/quick-integration?spm=0.0.0.0.pG0caE

1. 產品概述

關于分享和授權的sdk接口,我們在v5.0做出了巨大的改變,精簡了接口調用的代碼。并將分享授權,與評論等功能做出了隔離,使結構更加清晰。所以本版本的功能也只有分享與授權并無其他功能,請開發者注意。
注意:本文示例代碼只有分享與授權功能,并對接口進行了調整,如需要原功能的開發者,請繼續使用v4.3.0版本。

2. 獲取友盟Appkey

如果你之前已經在友盟注冊了應用,并獲取到了Appkey,可以繼續使用它.
如果你尚未在友盟注冊開發者賬號,需要先注冊,注冊之后登錄你的賬號,點擊添加新應用,填寫完應用基本信息后,將進入"下載SDK并添加代碼"頁面,此頁面即可得到Appkey。

3. 下載官方SDK

關于這一步,自行到官網下載即可,無非就是把下載好的jar包拷貝到項目中(按友盟官方文檔來即可)

4、AndroidManifest配置

在AndroidManifest.xml中的 <application></<application>中設置

(1)友盟Appkey(注意value需要設置成你自己的值,否則會失敗)

<meta-data
           android:name="UMENG_APPKEY"
           android:value="561cae6ae0f55abd990035bf">
        </meta-data>

(2)增加權限


<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.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" />
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

(3)針對不平臺所需要添加的數據,按照自己需要的平臺添加對應的配置
微信:

<activity
        android:name=".wxapi.WXEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

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:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:configChanges="orientation|keyboardHidden|screenSize"/>

qq完整版:

 <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="tencent100424468" />
            </intent-filter>
            </activity>
            <activity
        android:name="com.tencent.connect.common.AssistActivity"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:configChanges="orientation|keyboardHidden|screenSize"/>

分享編輯頁

<activity
        android:name="com.umeng.socialize.editorpage.ShareActivity"
        android:theme="@style/Theme.UMDefault"
        android:excludeFromRecents="true"/>

5、建立一個application文件,隨便起一個名字,比如叫App,別忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

在application類中配置第三方分享平臺的appkey以及友盟的初始化:

public class MyApplication extends Application {

    {
        PlatformConfig.setWeixin("wx7db093453016ae52", "d0d9e6d67b85b128261d4131515d3a97");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }

    @Override
    public void onCreate() {
        super.onCreate();

        //初始化友盟sdk
        UMShareAPI.get(this);
    }

關于各個平臺的配置,各個平臺的配置,建議放在全局Application或者程序入口(需要到各個平臺去注冊申請)



PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
       //微信 appid appsecret
PlatformConfig.setSinaWeibo("3921700954","04b48b094faeb16683c32669824ebdad");
       //新浪微博 appkey appsecret
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); 
        // QQ和Qzone appid appkey     
PlatformConfig.setAlipay("2015111700822536");
        //支付寶 appid
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        //易信 appkey      
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
        //Twitter appid appkey
PlatformConfig.setPinterest("1439206");
        //Pinterest appid 
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
        //來往 appid appkey

---------------------至此友盟分享的配置已經完成---------------------------------

接下來就是分享的完整代碼了

public class ShareUtils {

    private Activity activity;
    private String targetUrl; //分享的鏈接

    public ShareUtils(Activity activity, String targetUrl){
        this.activity = activity;
        this.targetUrl = targetUrl;
    }

    //多平臺分享(qq、qq空間、微信、微信朋友圈)
    public  void shareMorePlatform() {
        new ShareAction(activity).setDisplayList(
                SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN,
                SHARE_MEDIA.WEIXIN_CIRCLE)
                .setShareboardclickCallback(shareBoardlistener).open();
    }

    private  ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {

        @Override
        public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
            if (share_media == null) {
                if (snsPlatform.mKeyword.equals("umeng_sharebutton_custom")) {
                    Toast.makeText(activity, "add button success", Toast.LENGTH_SHORT).show();
                }

            } else {
                new ShareAction(activity)
                        .setPlatform(share_media)
                        .setCallback(umShareListener)
                        .withText("來自知么網絡的分享")
                        //分享圖片
                        .withMedia(new UMImage(activity, R.drawable.applogo120))
                        //分享網絡鏈接
                        .withTargetUrl(targetUrl)
                        .share();
            }
        }
    };

    private  UMShareListener umShareListener = new UMShareListener() {
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Log.i("plat", "---->分享成功了");
            Log.i("plat", "platform" + platform);
            Toast.makeText(activity, "分享成功啦", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(activity, "分享失敗啦", Toast.LENGTH_SHORT).show();
            if (t != null) {
                Log.i("plat", "---->分享失敗了");
                Log.i("throw", "throw:" + t.getMessage() + t.getCause());
            }
        }

        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(activity, "分享取消了", Toast.LENGTH_SHORT).show();
        }
    };

}

6、關于微信分享

在你的項目的包名目錄下創建wxapi文件夾,新建一個名為WXEntryActivity的activity繼承WXCallbackActivity。這里注意一定是包名路徑下,例如我的包名是com.umeng.soexample,則配置如下:(需要注意,如果使用精簡版WXCallbackActivity的路徑為com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路徑是com.umeng.socialize.weixin.view.WXCallbackActivity)

關于微信平臺申請對應的appkey需要的注意事項,(我的項目一開始就是沒有在微信平臺設置好這個簽名,就一直打不開微信分享)

1)簽名
2)包名(必須是你的項目的包名)
簽名的獲取可以參考這篇博客
<a > 微信開放平臺中android 應用簽名的獲取</a>

微信簽名說明
由于微信的簽名過程跟驗證流程較多,出錯的可能性較大,這里將對微信的簽名過程跟驗證做詳細的說明。
首先必須確保正確設置微信AppID及secret 工程的包名必須同申請應用的包名一致。 在微信開放平臺填寫你App的的簽名,測試、發布時要保證App的簽名跟微信開放平臺的簽名一致。 開發者的應用需要通過審核。開發者在申請應用必須要通過微信官網的審核才能進行調試,可以使用簽名工具自行檢查比對
8.3.1 獲取簽名
獲取應用簽名方式有兩種
8.3.1.1 方式一:
用eclipse導出 帶簽名 的apk文件,注意此時選擇的簽名文件是你發布app時的簽名文件。在導出的最后一步,eclipse會顯示一個Certificate fingerprints(證書指紋),如下圖。此時找到MD5值,將該MD5值復制出來,按照“ 去掉冒號(:),大寫轉小寫 ”的規則裝換,此時字符串就是簽名。


8.3.1.2 方式二:
導出 帶簽名 的apk文件,將該apk文件安裝至手機中。安裝微信的簽名工具,打開應用程序,即可得到簽名。
將獲取到的簽名和下圖進行比對

注意如果修改了微信平臺的包名和簽名,需要重裝微信客戶端后才可以測試,否則本地會保留之前的簽名緩存

7、QQ及Qzone登錄

實現方法同樣如上,注意下面幾點:
QQ及Qzone登錄都必須安裝QQ客戶端,并且只能跳轉QQ客戶端實現登錄,無法跳轉到Qzone客戶端
QQ及Qzone登錄需要確保在騰訊平臺通過審核或添加測試賬號,否則會報錯110406
QQ及Qzone登錄必須確保apk簽名與騰訊平臺上傳的apk簽名匹配,否則會報錯100044,出現此錯誤請聯系騰訊平臺人員(QQ:800013811 )修改apk簽名

注意將Android manifest xml里的 騰訊平臺APPID替換為自己申請的APPID,注意tencent前綴不要修改,否則無法正常實現QQ及Qzone登錄
平臺授權,是需要安裝對應的客戶端的。新浪微博,豆瓣網,人人網除外,新浪和人人如果本地安裝了對應平臺是走本地授權,如果沒有安裝,需要走網絡授權

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,237評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,957評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,248評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,356評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,081評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,485評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,534評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,720評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,263評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,025評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,204評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,787評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,461評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,874評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,105評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,945評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,205評論 2 375

推薦閱讀更多精彩內容