国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中使用ShareSDK集成分享功能的實例代碼

2019-10-22 18:17:35
字體:
來源:轉載
供稿:網友

引言

現在APP開發集成分享功能已經是非常普遍的需求了。其他集成分享技術我沒有使用過,今天我就來介紹下使用ShareSDK來進行分享功能開發的一些基本步驟和注意點,幫助朋友們避免一些坑。好了,下面切入正題正式開始介紹。

1、ShareSDK開發包及配置

這個不用多說,去他們官網看找SDK開發包和集成文檔即可。

Android版本地址:http://www.mob.com/downloadDetail/ShareSDK/android。

注意:記得要注冊ShareSDK賬號獲取AppKey哦。這些集成文檔里面應該都有,仔細看即可。

2、去各大應用平臺注冊獲取AppKey和AppSecret

這個步驟要看你們團隊想分享到哪些平臺了,一般都是微博和微信。所以一般都去新浪微博和微信開發平臺注冊。

新浪開發平臺:http://open.weibo.com/

騰訊開放平臺:https://open.weixin.qq.com/

3、一鍵分享功能的集成

使用ShareSDK進行分享,如果你不需要進行定制開發的話,就可以使用ShareSDK里面自帶的一鍵分享模塊。使用之前別忘記把ShareSDK中的jar包和ShareSDK.xml放到指定位置哦(配置文檔里面都有,慢慢看即可)。

在application節點下注冊下面的Activity如圖所示:

Android,ShareSDK,集成,分享

注意:將紅框部分的數字改成在騰訊開放平臺申請到的AppId即可。

如果項目集成了微信,還需要添加以下WXEntryActivity,不然的話,mob后臺無法做微信的分享統計:(在工程的包下新建wxapi目錄再放置WXEntryActivity)

<!-- 微信分享配置 -->  <activity   android:name=".wxapi.WXEntryActivity"   android:configChanges="keyboardHidden|orientation|screenSize"   android:exported="true"   android:screenOrientation="portrait"   android:theme="@android:style/Theme.Translucent.NoTitleBar" />

WXEntryActivity.java代碼如下:

/* * 官網地站:http://www.mob.com * 技術支持QQ: 4006852216 * 官方微信:ShareSDK (如果發布新版本的話,我們將會第一時間通過微信將版本更新內容推送給您。如果使用過程中有任何問題,也可以通過微信與我們取得聯系,我們將會在24小時內給予回復) * * Copyright (c) 2013年 mob.com. All rights reserved. */package com.example.haoyunhl.controller.wxapi;import android.content.Intent;import android.widget.Toast;import cn.sharesdk.wechat.utils.WXAppExtendObject;import cn.sharesdk.wechat.utils.WXMediaMessage;import cn.sharesdk.wechat.utils.WechatHandlerActivity;/** 微信客戶端回調activity示例 */public class WXEntryActivity extends WechatHandlerActivity { /**  * 處理微信發出的向第三方應用請求app message  * <p>  * 在微信客戶端中的聊天頁面有“添加工具”,可以將本應用的圖標添加到其中  * 此后點擊圖標,下面的代碼會被執行。Demo僅僅只是打開自己而已,但你可  * 做點其他的事情,包括根本不打開任何頁面  */ public void onGetMessageFromWXReq(WXMediaMessage msg) {  if (msg != null) {   Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());   startActivity(iLaunchMyself);  } } /**  * 處理微信向第三方應用發起的消息  * <p>  * 此處用來接收從微信發送過來的消息,比方說本demo在wechatpage里面分享  * 應用時可以不分享應用文件,而分享一段應用的自定義信息。接受方的微信  * 客戶端會通過這個方法,將這個信息發送回接收方手機上的本demo中,當作  * 回調。  * <p>  * 本Demo只是將信息展示出來,但你可做點其他的事情,而不僅僅只是Toast  */ public void onShowMessageFromWXReq(WXMediaMessage msg) {  if (msg != null && msg.mediaObject != null    && (msg.mediaObject instanceof WXAppExtendObject)) {   WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;   Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();  } }}

下面你就可以調用一鍵分享功能進行簡單的分享了,記住在調用之前一點要先調用ShareSDK.initSDK(this)這個方法。

說明:一鍵分享雖然簡單,但是如果想要對一鍵分享界面進行修改時比較麻煩的,聽說現在版本修改界面好像方便很多了?(不清楚,兄弟你可以去集成文檔瞧瞧)。下面我就來介紹自定義的分享界面。

4、自定義分享界面的開發

先看效果圖:

Android,ShareSDK,集成,分享

下面就來詳細介紹這個分享界面的開發

界面樣式的布局相信大家應該都很熟悉了,我這里就不貼樣式布局的代碼了。我在開發中將分享功能集成到了一個組件中(ShareDialog)。詳細代碼如下:

package com.mobile.develop.framework.dialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface.*;import android.view.Display;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.TextView;import com.example.haoyunhl.controller.R;public class ShareDialog { private Dialog mDialog; //取消分享 private TextView txtCancle; private OnClickListener mOnCancleListener; //微信分享 private LinearLayout mWeChatShare; private OnClickListener mOnWeChatShareListener; //微信朋友圈分享 private LinearLayout mWeChatFriendShare; private OnClickListener mOnWeChatFriendShareListener; //QQ分享 private LinearLayout mQQShare; private OnClickListener mOnQQShareListener; private Context mContext; private Display display; public ShareDialog(Context context){  mContext=context;  //獲取屏幕對象  WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);  display = windowManager.getDefaultDisplay(); } //設置微信分享 public ShareDialog setOnWeChatShare(OnClickListener weChatShareListener){  mOnWeChatShareListener=weChatShareListener;  return this; } //設置分享朋友圈 public ShareDialog setOnWeChatFriendShare(OnClickListener weChatFriendShareListener){  mOnWeChatFriendShareListener=weChatFriendShareListener;  return this; } //QQ分享 public ShareDialog setOnQQShare(OnClickListener qqShareListener){  mOnQQShareListener=qqShareListener;  return this; } public ShareDialog setOnCancleListener(OnClickListener cancleListener){  mOnCancleListener=cancleListener;  return this; } public void show(){  mDialog.show(); } public void dismiss(){  mDialog.dismiss(); } /**  * 創建BaseDialog實例  * @return  */ public ShareDialog builder(){  LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  View view = inflater.inflate(R.layout.share_dialg_style, null);  //設置彈出框橫向鋪滿整個屏幕  view.setMinimumWidth(display.getWidth());  mDialog = new Dialog(mContext, R.style.ActionSheetDialogStyle);  //設置dialog彈出后會點擊屏幕,dialog不消失;點擊物理返回鍵dialog消失  mDialog.setCanceledOnTouchOutside(true);  Window dialogWindow = mDialog.getWindow();  dialogWindow.setGravity(Gravity.CENTER | Gravity.BOTTOM);  WindowManager.LayoutParams lp = dialogWindow.getAttributes();  lp.x = 0;  lp.y = 0;  dialogWindow.setAttributes(lp);  //設置點擊隱藏  txtCancle=(TextView)view.findViewById(R.id.txtCancle);  txtCancle.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    if (mOnCancleListener != null) {     mOnCancleListener.onClick(mDialog, Dialog.BUTTON_NEGATIVE);    }    dismiss();   }  });  //微信分享  mWeChatShare=(LinearLayout)view.findViewById(R.id.mWeChatShare);  mWeChatShare.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    if (mOnWeChatShareListener != null) {     mOnWeChatShareListener.onClick(mDialog, Dialog.BUTTON_POSITIVE);    }    dismiss();   }  });  //朋友圈分享  mWeChatFriendShare=(LinearLayout)view.findViewById(R.id.mWeChatFriendShare);  mWeChatFriendShare.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    if(mOnWeChatFriendShareListener!=null) {     mOnWeChatFriendShareListener.onClick(mDialog, Dialog.BUTTON_POSITIVE);    }    dismiss();   }  });  //QQ分享  mQQShare=(LinearLayout)view.findViewById(R.id.mQQShare);  mQQShare.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    if(mOnQQShareListener!=null){     mOnQQShareListener.onClick(mDialog,Dialog.BUTTON_POSITIVE);    }   }  });  mDialog.setContentView(view);  return this; }}

我們自定義分享時只需要重寫SharePlatform.java即可。在這個文件中通過不同的分支,來執行不同的分享邏輯。代碼如下:

package com.example.haoyunhl.utils;import android.app.Activity;import android.content.Context;import android.os.Handler;import android.os.Message;import android.widget.Toast;import java.util.HashMap;import cn.sharesdk.framework.Platform;import cn.sharesdk.framework.PlatformActionListener;import cn.sharesdk.framework.ShareSDK;import cn.sharesdk.tencent.qq.QQ;import cn.sharesdk.wechat.friends.Wechat;import cn.sharesdk.wechat.moments.WechatMoments;public class SharePlatform extends Activity implements PlatformActionListener { private Context context; public SharePlatform(Context context){  this.context=context;  ShareSDK.initSDK(this.context); } /**  * 分享回調  */ @Override public void onCancel(Platform arg0, int arg1) {  //回調的地方是子線程,進行UI操作要用handle處理  handler.sendEmptyMessage(4); } @Override public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {  //回調的地方是子線程,進行UI操作要用handle處理  if (arg0.getName().equals(Wechat.NAME)) {   handler.sendEmptyMessage(1);  } else if (arg0.getName().equals(WechatMoments.NAME)) {   handler.sendEmptyMessage(2);  } else if (arg0.getName().equals(QQ.NAME)) {   handler.sendEmptyMessage(3);  } } @Override public void onError(Platform arg0, int arg1, Throwable arg2) {  //回調的地方是子線程,進行UI操作要用handle處理  arg2.printStackTrace();  Message msg = new Message();  msg.what = 5;  msg.obj = arg2.getMessage();  handler.sendMessage(msg); } Handler handler = new Handler() {  @Override  public void handleMessage(Message msg) {   switch (msg.what) {    case 1:     Toast.makeText(context, "微信分享成功", Toast.LENGTH_LONG).show();     break;    case 2:     Toast.makeText(context, "朋友圈分享成功", Toast.LENGTH_LONG).show();     break;    case 3:     Toast.makeText(context, "QQ分享成功", Toast.LENGTH_LONG).show();     break;    case 4:     Toast.makeText(context, "取消分享", Toast.LENGTH_LONG).show();     break;    case 5:     Toast.makeText(context, "分享失敗", Toast.LENGTH_LONG).show();     break;    default:     break;   }  } }; /**  * 進行分享  *  * @param shareType  * @param shareTitle  * @param shareText  * @param shareImageUrl  * @param shareUrl  */ public void share(String shareType, String shareTitle, String shareText, String shareImageUrl, String shareUrl) {  Platform.ShareParams sharePlatform = new Platform.ShareParams();  Platform platform;  /**   * 如果是微信朋友圈分享   */  if(shareType.equalsIgnoreCase(ShareConfig.WeChatMomentsShare)){   sharePlatform.setShareType(Platform.SHARE_WEBPAGE);   setSharePlatform(sharePlatform,shareTitle, shareText, shareImageUrl);   if(shareUrl!=null && !shareUrl.equalsIgnoreCase("")) {    sharePlatform.setUrl(shareUrl);   }   platform = ShareSDK.getPlatform(WechatMoments.NAME);   platform.setPlatformActionListener(this);   platform.share(sharePlatform);  }  /**   * 如果是微信分享   */  else if(shareType.equalsIgnoreCase(ShareConfig.WeChatShare)){   sharePlatform.setShareType(Platform.SHARE_WEBPAGE);   setSharePlatform(sharePlatform, shareTitle, shareText, shareImageUrl);   if(shareUrl!=null && !shareUrl.equalsIgnoreCase("")) {    sharePlatform.setUrl(shareUrl);   }   platform = ShareSDK.getPlatform(Wechat.NAME);   platform.setPlatformActionListener(this);   platform.share(sharePlatform);  }  /**   * 如果是QQ分享   */  else {   setSharePlatform(sharePlatform, shareTitle, shareText, shareImageUrl);   if(shareUrl!=null && !shareUrl.equalsIgnoreCase("")) {    sharePlatform.setTitleUrl(shareUrl);   }   platform = ShareSDK.getPlatform(QQ.NAME);   platform.setPlatformActionListener(this);   platform.share(sharePlatform);  } } private void setSharePlatform(Platform.ShareParams sharePlatform,String shareTitle, String shareText, String shareImageUrl){  sharePlatform.setTitle(shareTitle);  if(shareText!=null && !shareText.equalsIgnoreCase("")) {   sharePlatform.setText(shareText);  }  if(shareImageUrl!=null && !shareImageUrl.equalsIgnoreCase("")) {   sharePlatform.setImageUrl(shareImageUrl);   sharePlatform.setImagePath(shareImageUrl);  } }}

我們在導航欄中只需要如此調用即可實現分享功能:

Android,ShareSDK,集成,分享

以上這篇Android中使用ShareSDK集成分享功能的實例代碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉安市| 鲜城| 迁安市| 罗山县| 依兰县| 东乌珠穆沁旗| 饶河县| 绥江县| 龙里县| 兰西县| 宁武县| 江油市| 临桂县| 万年县| 土默特右旗| 嘉义县| 咸宁市| 财经| 论坛| 兰溪市| 贺州市| 台南市| 闽清县| 新宁县| 靖西县| 西充县| 富源县| 保山市| 弋阳县| 丰城市| 阳原县| 达日县| 宁明县| 泗洪县| 崇州市| 天津市| 定结县| 正宁县| 辽宁省| 馆陶县| 任丘市|