首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

ShareSDK Android 接入完整指南:從註冊到分享功能落地

     編輯:Java 相關知識

什麼是 ShareSDK?

ShareSDK 是 MobTech 提供的社交分享組件,支援微信、QQ、微博、Facebook、Twitter 等 40+ 平台一鍵分享、授權登錄、獲取用戶資料。本文基於官方文檔整理 Android 接入全流程,助你快速落地分享功能。

第一步:獲取 ShareSDK 與創建應用

  1. 訪問 Mob 官網 註冊開發者賬號
  2. 創建應用獲取 AppKey (如 androidv1101)
  3. 下載 SDK 壓縮包,解壓得到核心結構:
    • ShareSDK for Android/Libs/MainLibs:核心庫 (jar + res)
    • OnekeyShare:一鍵分享 UI 源碼庫
    • Sample:演示項目
    • Services:插件服務 (如評論讚)

第二步:導入項目 (兩種方式二選一)

方式 A:手動複製 (適合已有項目精細控制)


# 1. 複製 jar 到項目 libs/
cp MainLibs/libs/*.jar your-project/libs/

# 2. 複製資源文件 (必須,否則授權頁找不到圖片/字串)
cp -r MainLibs/res/* your-project/src/main/res/

# 3. 若需一鍵分享 UI,再複製 OnekeyShare/src 及 res
# 4. 確保 android-support-v4.jar 存在 (現代項目用 AndroidX 替代)

方式 B:快速集成腳本 (Windows 限定,適合新項目/測試)

雙擊運行 SDK 內的 quick_integrate.bat,按提示輸入項目路徑,自動完成複製覆蓋。

第三步:配置應用信息 (三種優先級,擇一即可)

優先級 1:XML 配置 (最簡單,優先級最低)

在 assets/ShareSDK.xml (需自建 assets 目錄):

<?xml version="1.0" encoding="utf-8"?>
<ShareSDK AppKey="你的Mob_AppKey">
    <!-- 新浪微博示例 -->
    <SinaWeibo 
        Id="1" 
        SortId="1"
        AppKey="你的微博_AppKey" 
        AppSecret="你的微博_AppSecret"
        RedirectUrl="你的回調頁域名" 
        ShareByAppClient="true"
        Enable="true" />
    <!-- 其他平台同理添加 -->
</ShareSDK>

優先級 2:代碼配置 (靈活,可動態從服務器下發)

import cn.sharesdk.framework.ShareSDK;
import java.util.HashMap;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化 (傳入 Mob AppKey)
        ShareSDK.initSDK(this, "你的Mob_AppKey");
        
        // 動態配置平台信息
        HashMap<String, Object> weibo = new HashMap<>();
        weibo.put("Id", 1);
        weibo.put("SortId", 1);
        weibo.put("AppKey", "微博_AppKey");
        weibo.put("AppSecret", "微博_AppSecret");
        weibo.put("RedirectUrl", "回調域名");
        weibo.put("ShareByAppClient", true);
        weibo.put("Enable", true);
        ShareSDK.setPlatformDevInfo("SinaWeibo", weibo);
    }
}

優先級 3:後台配置 (最高優先級,修改即時生效無需發版)

登錄 Mob 開發者後台 → 應用管理 → 平台配置,填寫各平台 Key/Secret。
需在代碼調用 ShareSDK.initSDK(context, "Mob_AppKey") 且聯網才生效。

第四步:AndroidManifest.xml 權限與組件聲明

<manifest ...>
    <!-- 基礎權限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <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.GET_TASKS"/>

    <application ...>
        <!-- ShareSDK 核心 UI 容器 (授權頁等) -->
        <activity
            android:name="com.mob.tools.MobUIShell"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize" />

        <!-- 微信回調 Activity (包名需與應用包名一致,放在 wxapi 目錄) -->
        <activity
            android:name=".wxapi.WXEntryActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait" />

        <!-- 易信回調 (如需) -->
        <activity
            android:name=".yxapi.YXEntryActivity"
            android:exported="true"
            ... />
    </application>
</manifest>

第五步:啟動分享 (一鍵分享菜單)

import cn.sharesdk.onekeyshare.OnekeyShare;

public void showShareMenu() {
    OnekeyShare oks = new OnekeyShare();
    // 關閉 SSO 授權 (某些平台需開啟)
    oks.disableSSOWhenAuthorize(); 
    
    // 標題/標題 URL (印象筆記/郵件用)
    oks.setTitle("分享標題");
    oks.setTitleUrl("https://example.com");
    
    // 正文內容
    oks.setText("這是分享正文內容~");
    
    // 圖片 (本地路徑/網絡 URL/資源 ID)
    oks.setImageUrl("https://example.com/logo.png");
    
    // 分享鏈接 (微信/朋友圈/QQ 空間必填)
    oks.setUrl("https://example.com/detail.html");
    
    // 回調監聽
    oks.setCallback(new PlatformActionListener() {
        @Override public void onComplete(Platform p, int action, HashMap<String, Object> data) {
            Log.d("ShareSDK", "分享成功: " + p.getName());
        }
        @Override public void onError(Platform p, int action, Throwable t) {
            Log.e("ShareSDK", "分享失敗", t);
        }
        @Override public void onCancel(Platform p, int action) {
            Log.i("ShareSDK", "用戶取消分享");
        }
    });
    
    // 顯示分享面板
    oks.show(this); // this 為 Activity/Context
}

常見坑位避雷

現象原因解決
微信分享回調不觸發包名不匹配、未建 wxapi/WXEntryActivity、未在 Manifest 註冊 exported=true嚴格對照官網檢查包名路徑
授權頁空白/崩潰缺少 MainLibs/res 資源、MobUIShell 未註冊補全資源複製、檢查 Manifest
分享面板無圖標OnekeyShare/res 未複製、VectorDrawable 兼容性啟用 vectorDrawables.useSupportLibrary = true
簽名驗證失敗發布簽名與微博/微信後台配置不一致確保測試/正式簽名 SHA1 都已填入開放平台

總結

ShareSDK 接入核心在於:AppKey 體系區分 (Mob AppKey vs 平台 AppKey)、資源文件完整複製、回調 Activity 包名路徑正確、簽名一致性。建議新項目優先使用 代碼配置方式 (優先級 2),便於構建動態下發平台配置的能力,避免發版週期。分享功能上線前,務必在真機測試所有目標平台的完整鏈路:授權 → 分享 → 回調 → 數據上報。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved