ShareSdk實現第三方分享功能
阿新 • • 發佈:2019-01-03
背景:
今天有很多小夥伴在說,怎麼實現微信朋友圈的分享,分享微信好友,微博等啊,很炫酷啊,感覺好牛掰的樣子,這個功能怎麼實現啊,糾結啊,我一聽,其實也就是使用的第三方分享嘛,既然朋友都要用,那麼我就發一篇關於sharesdk的部落格,當然大家也可以去官方看官方文件,也是很方便的,釋出這偏部落格,只想讓大家實現這個功能,瞭解這小肉肉,帶領小夥伴們分分鐘裝逼,分分鐘搞定這個事情。
一:先上效果圖
二、實現步驟:
1:註冊mob賬號,獲取appkey
2:下載sharesdk第三方
3:整合
總結:是不是很簡單,三部曲搞定,當然這不是死亡三部曲。
sharesdk下載地址:http://wiki.mob.com
三、具體整合
第一步:進入ShareSDK解壓目錄,開啟“Share SDK for Android”目錄,可以找到“QuickIntegrater.jar”,這個就是快速整合ShareSDK的工具
在這裡你選擇你要分享的一些第三方,比如:QQ空間,QQ好友,微信朋友圈,微博等等,根據自己的需求選擇
第二步:複製檔案到自己的專案中
1.將ShareSdk檔案複製到自己的專案中
3.將主要檔案複製到自己專案中
第二步:配置AndroidManifest.xml檔案
1.新增許可權
<!-- sdk許可權 --> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" />
<pre name="code" class="java"> <uses-permission android:name="android.permission.INTERNET"/>
2.註冊Activity資訊
<!-- 新增activity資訊 -->
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" >
<intent-filter>
<data android:scheme="tencent100371282" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- 微信分享回撥 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 易信分享回撥 -->
<activity
android:name=".yxapi.YXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
第四步:分享方法
示例程式碼:
/**
* 分享sdk:一鍵分享
*/
private void shareSDK() {
ShareSDK.initSDK(this);
oks = new OnekeyShare();
// 禁用sso授權
oks.disableSSOWhenAuthorize();
// 分享時Notification的圖示和文字
oks.setNotification(R.drawable.ic_launcher,
getString(R.string.app_name));
// title標題,印象筆記、郵箱、資訊、微信、人人網和QQ空間使用
oks.setTitle("一鍵分享");
// titleUrl是標題的網路連結,僅在人人網和QQ空間使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文字,所有平臺都需要這個欄位
oks.setText("一鍵分享");
// imagePath是圖片的本地路徑,Linked-In以外的平臺都支援此引數
oks.setImagePath("/sdcard/test.jpg");// 確保SDcard下面存在此張圖片
// url僅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我對這條分享的評論,僅在人人網和QQ空間使用
oks.setComment("我是ShareSdk,我已在手,天下我有");
// site是分享此內容的網站名稱,僅在QQ空間使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此內容的網站地址,僅在QQ空間使用
oks.setSiteUrl("http://sharesdk.cn");
// 啟動分享GUI
oks.show(this);
}
MainActivity :可根據自己需求實現(按鈕----點選事件)
package com.sharesdk.ui;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;
import com.sharesdk.view.RefreshableListView;
/**
*
* @author zengtao 2015年3月23日 下午4:01:51
*/
public class MainActivity extends Activity implements OnClickListener {
/** 分享按鈕 */
private Button bt_share;
/** 開啟遮罩 */
private Button bt_open_mask;
/** 快捷分享的入口 */
private OnekeyShare oks;
/** 遮罩 */
private RelativeLayout mLayout = null;
/** 設定改變 */
private boolean flag = true;
/** 用於顯示字型 */
private TextView tv_mesg = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
/**
* 初始化控制元件
*/
private void initView() {
mLayout = (RelativeLayout) findViewById(R.id.top);
bt_share = (Button) findViewById(R.id.bt_share);
bt_open_mask = (Button) findViewById(R.id.bt_start_mask);
initListener();
}
/**
* 初始化監聽事件
*/
private void initListener() {
bt_share.setOnClickListener(this);
bt_open_mask.setOnClickListener(this);
}
/**
* 分享sdk:一鍵分享
*/
private void shareSDK() {
ShareSDK.initSDK(this);
oks = new OnekeyShare();
// 禁用sso授權
oks.disableSSOWhenAuthorize();
// 分享時Notification的圖示和文字
oks.setNotification(R.drawable.ic_launcher,
getString(R.string.app_name));
// title標題,印象筆記、郵箱、資訊、微信、人人網和QQ空間使用
oks.setTitle("一鍵分享");
// titleUrl是標題的網路連結,僅在人人網和QQ空間使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文字,所有平臺都需要這個欄位
oks.setText("一鍵分享");
// imagePath是圖片的本地路徑,Linked-In以外的平臺都支援此引數
oks.setImagePath("/sdcard/test.jpg");// 確保SDcard下面存在此張圖片
// url僅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我對這條分享的評論,僅在人人網和QQ空間使用
oks.setComment("我是ShareSdk,我已在手,天下我有");
// site是分享此內容的網站名稱,僅在QQ空間使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此內容的網站地址,僅在QQ空間使用
oks.setSiteUrl("http://sharesdk.cn");
// 啟動分享GUI
oks.show(this);
}
/**
* 開啟遮罩
*/
private void openMask() {
if (flag) {
tv_mesg = new TextView(MainActivity.this);
tv_mesg.setTextColor(Color.BLUE);
tv_mesg.setTextSize(20);
tv_mesg.setText("滾滾長江東逝水,浪花淘盡英雄。\n" + "是非成敗轉頭空,\n"
+ "青山依舊在,幾度夕陽紅。\n" + "白髮漁樵江渚上,慣看秋月春風。 \n" + "一壺濁酒喜相逢,\n"
+ "古今多少事,都付笑談中。");
tv_mesg.setGravity(Gravity.CENTER);
tv_mesg.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
tv_mesg.setBackgroundColor(Color.parseColor("#86222222"));
bt_open_mask.setText("關閉遮罩");
flag = false;
mLayout.addView(tv_mesg);
} else {
bt_open_mask.setText("開啟遮罩");
flag = true;
mLayout.removeView(tv_mesg);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_share:
shareSDK();
break;
case R.id.bt_start_mask:
openMask();
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
ShareSDK.stopSDK();
}
}
三:總結
以上呢,便完成了一個簡單的ShareSdk分享功能,如果你想要更高階的自定義等等,建議去官方看看他們的文件,這樣也有助於學習,提高自己接觸新事物的能力,小夥伴們,加油吧,幹吧得。