【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能_第1頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能_第2頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能_第3頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能_第4頁
【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能

怎么在Android中使用ShareSDK實(shí)現(xiàn)一個(gè)分享功能?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。1、ShareSDK開發(fā)包及配置2、去各大應(yīng)用平臺(tái)注冊(cè)獲取AppKey和AppSecret這個(gè)步驟要看你們團(tuán)隊(duì)想分享到哪些平臺(tái)了,一般都是微博和微信。所以一般都去新浪微博和微信開發(fā)平臺(tái)注冊(cè)。新浪開發(fā)平臺(tái):/騰訊開放平臺(tái):/3、一鍵分享功能的集成使用ShareSDK進(jìn)行分享,如果你不需要進(jìn)行定制開發(fā)的話,就可以使用ShareSDK里面自帶的一鍵分享模塊。使用之前別忘記把ShareSDK中的jar包和ShareSDK.xml放到指定位置哦(配置文檔里面都有,慢慢看即可)。在application節(jié)點(diǎn)下注冊(cè)下面的Activity如圖所示:注意:將紅框部分的數(shù)字改成在騰訊開放平臺(tái)申請(qǐng)到的AppId即可。如果項(xiàng)目集成了微信,還需要添加以下WXEntryActivity,不然的話,mob后臺(tái)無法做微信的分享統(tǒng)計(jì):(在工程的包下新建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)地站:

*

技術(shù)支持QQ:

4006852216

*

官方微信:ShareSDK

(如果發(fā)布新版本的話,我們將會(huì)第一時(shí)間通過微信將版本更新內(nèi)容推送給您。如果使用過程中有任何問題,也可以通過微信與我們?nèi)〉寐?lián)系,我們將會(huì)在24小時(shí)內(nèi)給予回復(fù))

*

*

Copyright

(c)

2013年

.

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)用請(qǐng)求app

message

*

<p>

*

在微信客戶端中的聊天頁面有“添加工具”,可以將本應(yīng)用的圖標(biāo)添加到其中

*

此后點(diǎn)擊圖標(biāo),下面的代碼會(huì)被執(zhí)行。Demo僅僅只是打開自己而已,但你可

*

做點(diǎn)其他的事情,包括根本不打開任何頁面

*/

public

void

onGetMessageFromWXReq(WXMediaMessage

msg)

{

if

(msg

!=

null)

{

Intent

iLaunchMyself

=

getPackageManager().getLaunchIntentForPackage(getPackageName());

startActivity(iLaunchMyself);

}

}

/**

*

處理微信向第三方應(yīng)用發(fā)起的消息

*

<p>

*

此處用來接收從微信發(fā)送過來的消息,比方說本demo在wechatpage里面分享

*

應(yīng)用時(shí)可以不分享應(yīng)用文件,而分享一段應(yīng)用的自定義信息。接受方的微信

*

客戶端會(huì)通過這個(gè)方法,將這個(gè)信息發(fā)送回接收方手機(jī)上的本demo中,當(dāng)作

*

回調(diào)。

*

<p>

*

本Demo只是將信息展示出來,但你可做點(diǎn)其他的事情,而不僅僅只是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)用一鍵分享功能進(jìn)行簡(jiǎn)單的分享了,記住在調(diào)用之前一點(diǎn)要先調(diào)用ShareSDK.initSDK(this)這個(gè)方法。說明:一鍵分享雖然簡(jiǎn)單,但是如果想要對(duì)一鍵分享界面進(jìn)行修改時(shí)比較麻煩的,聽說現(xiàn)在版本修改界面好像方便很多了?(不清楚,兄弟你可以去集成文檔瞧瞧)。下面我就來介紹自定義的分享界面。4、自定義分享界面的開發(fā)先看效果圖:下面就來詳細(xì)介紹這個(gè)分享界面的開發(fā)界面樣式的布局相信大家應(yīng)該都很熟悉了,我這里就不貼樣式布局的代碼了。我在開發(fā)中將分享功能集成到了一個(gè)組件中(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;

//獲取屏幕對(duì)象

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實(shí)例

*

@return

*/

public

ShareDialog

builder(){

LayoutInflater

inflater

=

(LayoutInflater)

mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View

view

=

inflater.inflate(R.layout.share_dialg_style,

null);

//設(shè)置彈出框橫向鋪滿整個(gè)屏幕

view.setMinimumWidth(display.getWidth());

mDialog

=

new

Dialog(mContext,

R.style.ActionSheetDialogStyle);

//設(shè)置dialog彈出后會(huì)點(diǎn)擊屏幕,dialog不消失;點(diǎn)擊物理返回鍵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è)置點(diǎn)擊隱藏

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;

}

}我們自定義分享時(shí)只需要重寫SharePlatform.java即可。在這個(gè)文件中通過不同的分支,來執(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)的地方是子線程,進(jìn)行UI操作要用handle處理

handler.sendEmptyMessage(4);

}

@Override

public

void

onComplete(Platform

arg0,

int

arg1,

HashMap<String,

Object>

arg2)

{

//回調(diào)的地方是子線程,進(jìn)行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)的地方是子線程,進(jìn)行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;

}

}

};

/**

*

進(jìn)行分享

*

*

@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,

s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論