最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年01月04日 14:13:50   作者:dreamGong  
下面小編就為大家分享一篇Android中使用ShareSDK集成分享功能的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

引言

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

1、ShareSDK開發(fā)包及配置

這個不用多說,去他們官網(wǎng)看找SDK開發(fā)包和集成文檔即可。

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

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

2、去各大應(yīng)用平臺注冊獲取AppKey和AppSecret

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

新浪開發(fā)平臺:http://open.weibo.com/

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

3、一鍵分享功能的集成

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

在application節(jié)點下注冊下面的Activity如圖所示:

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

如果項目集成了微信,還需要添加以下WXEntryActivity,不然的話,mob后臺無法做微信的分享統(tǒng)計:(在工程的包下新建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代碼如下:

/*
 * 官網(wǎng)地站:http://www.mob.com
 * 技術(shù)支持QQ: 4006852216
 * 官方微信:ShareSDK (如果發(fā)布新版本的話,我們將會第一時間通過微信將版本更新內(nèi)容推送給您。如果使用過程中有任何問題,也可以通過微信與我們?nèi)〉寐?lián)系,我們將會在24小時內(nèi)給予回復(fù))
 *
 * 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;
/** 微信客戶端回調(diào)activity示例 */
public class WXEntryActivity extends WechatHandlerActivity {
 /**
  * 處理微信發(fā)出的向第三方應(yīng)用請求app message
  * <p>
  * 在微信客戶端中的聊天頁面有“添加工具”,可以將本應(yīng)用的圖標(biāo)添加到其中
  * 此后點擊圖標(biāo),下面的代碼會被執(zhí)行。Demo僅僅只是打開自己而已,但你可
  * 做點其他的事情,包括根本不打開任何頁面
  */
 public void onGetMessageFromWXReq(WXMediaMessage msg) {
  if (msg != null) {
   Intent iLaunchMyself = getPackageManager().getLaunchIntentForPackage(getPackageName());
   startActivity(iLaunchMyself);
  }
 }
 /**
  * 處理微信向第三方應(yīng)用發(fā)起的消息
  * <p>
  * 此處用來接收從微信發(fā)送過來的消息,比方說本demo在wechatpage里面分享
  * 應(yīng)用時可以不分享應(yīng)用文件,而分享一段應(yīng)用的自定義信息。接受方的微信
  * 客戶端會通過這個方法,將這個信息發(fā)送回接收方手機上的本demo中,當(dāng)作
  * 回調(diào)。
  * <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();
  }
 }
}

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

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

4、自定義分享界面的開發(fā)

先看效果圖:

下面就來詳細(xì)介紹這個分享界面的開發(fā)

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

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();
 }
 //設(shè)置微信分享
 public ShareDialog setOnWeChatShare(OnClickListener weChatShareListener){
  mOnWeChatShareListener=weChatShareListener;
  return this;
 }
 //設(shè)置分享朋友圈
 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();
 }
 /**
  * 創(chuàng)建BaseDialog實例
  * @return
  */
 public ShareDialog builder(){
  LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View view = inflater.inflate(R.layout.share_dialg_style, null);
  //設(shè)置彈出框橫向鋪滿整個屏幕
  view.setMinimumWidth(display.getWidth());
  mDialog = new Dialog(mContext, R.style.ActionSheetDialogStyle);
  //設(shè)置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);
  //設(shè)置點擊隱藏
  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即可。在這個文件中通過不同的分支,來執(zhí)行不同的分享邏輯。代碼如下:

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);
 }
 /**
  * 分享回調(diào)
  */
 @Override
 public void onCancel(Platform arg0, int arg1) {
  //回調(diào)的地方是子線程,進行UI操作要用handle處理
  handler.sendEmptyMessage(4);
 }
 @Override
 public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
  //回調(diào)的地方是子線程,進行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) {
  //回調(diào)的地方是子線程,進行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);
  }
 }
}

我們在導(dǎo)航欄中只需要如此調(diào)用即可實現(xiàn)分享功能:

以上這篇Android中使用ShareSDK集成分享功能的實例代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android 動態(tài)的顯示時間

    Android 動態(tài)的顯示時間

    本文給大家分享一段代碼實現(xiàn)android動態(tài)顯示時間,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2016-12-12
  • Android幾種消息推送方案總結(jié)

    Android幾種消息推送方案總結(jié)

    本文主要總結(jié)下Android平臺下幾種推送方案的基本情況以及優(yōu)缺點,具有一定的參考作用,下面跟著小編一起來看下吧
    2017-01-01
  • Android實現(xiàn)文件存儲并讀取的示例代碼

    Android實現(xiàn)文件存儲并讀取的示例代碼

    本篇文章主要介紹了Android實現(xiàn)文件存儲的示例代碼,文件內(nèi)容可以分別存儲在手機內(nèi)存和外存中,并且都可以讀去取出來,有興趣的可以了解一下。
    2017-01-01
  • Android實現(xiàn)屏幕手寫簽名

    Android實現(xiàn)屏幕手寫簽名

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)屏幕手寫簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Android實現(xiàn)高亮搜索功能的示例

    Android實現(xiàn)高亮搜索功能的示例

    這篇文章主要介紹了Android實現(xiàn)高亮搜索功能的示例,幫助大家更好的理解和學(xué)習(xí)使用Android開發(fā),感興趣的朋友可以了解下
    2021-05-05
  • Android 再按一次返回鍵退出程序?qū)崿F(xiàn)思路

    Android 再按一次返回鍵退出程序?qū)崿F(xiàn)思路

    用戶退出應(yīng)用前給出一個提示是很有必要的,因為可能是用戶并不真的想退出,而只是一不小心按下了返回鍵,大部分應(yīng)用的做法是在應(yīng)用退出去前給出一個Dialog提示框;個人覺得再按一次返回鍵退出程序很有必要,接下來介紹一些簡單實現(xiàn)
    2013-01-01
  • Kotlin協(xié)程的啟動方式介紹

    Kotlin協(xié)程的啟動方式介紹

    這篇文章我們來講協(xié)程的啟動,畢竟協(xié)程是一個很強大的設(shè)計模式,深入了解需要花很多的時間,我們先從簡單開始,其實學(xué)會了簡單的使用,基本已經(jīng)可以滿足我們平時的開發(fā)需要了,話不多說,開始
    2022-09-09
  • Android Activity之間的數(shù)據(jù)傳遞方法總結(jié)

    Android Activity之間的數(shù)據(jù)傳遞方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Android Activity之間的數(shù)據(jù)傳遞方法,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Android實現(xiàn)折線圖小工具

    Android實現(xiàn)折線圖小工具

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)折線圖小工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android Studio引入FFmpeg的方法

    Android Studio引入FFmpeg的方法

    這篇文章主要介紹了Android Studio引入FFmpeg的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論

桦南县| 南岸区| 和田市| 灵石县| 深泽县| 商都县| 和政县| 盐源县| 彭山县| 连城县| 平原县| 财经| 黄冈市| 东兰县| 武平县| 龙胜| 海门市| 昌宁县| 南丰县| 霍林郭勒市| 洛阳市| 黔南| 彭阳县| 宜都市| 灵石县| 台山市| 遂宁市| 阳泉市| 宁河县| 邮箱| 祁门县| 天峻县| 微博| 隆林| 孟村| 玉环县| 保康县| 宝山区| 赤壁市| 岱山县| 沁水县|