具體配置方法詳見官網(wǎng),我這邊使用的離線配置向臀,即沒有使用gradle進(jìn)行配置巢墅,這里偷偷懶,不詳細(xì)記錄
詳細(xì)步驟
步驟為粗略步驟券膀,詳細(xì)步驟參照此處
- 在官網(wǎng)根據(jù)自己要分享的平臺(tái)下載相關(guān)的jar包
- 將下載的jar包放在自己目錄的lib文件夾下并在項(xiàng)目中引用
- 使用它提供的指導(dǎo)文件生成相關(guān)文件君纫,并根據(jù)readme將各個(gè)文件放在各自對應(yīng)的路徑下
- 在manifests文件下申請相關(guān)權(quán)限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<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" />
- 在application標(biāo)簽中添加以下內(nèi)容
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize" >
<!-- 調(diào)用新浪原生SDK,需要注冊的回調(diào)activity -->
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!--集成line客戶端登錄授權(quán)芹彬,需要添如下格式的過濾器-->
<intent-filter>
<data android:scheme="line.1477692153" />
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- ShareSDK<strong>3.1.0版本之前</strong>才需要在MobUIShell下面注冊此意圖蓄髓,3.1.0版本之后(包含3.1.0)不需要注冊此intent-->
<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>
<!-- 填寫您從Mob開發(fā)者后臺(tái)中得到的Appkey和AppSecret -->
<meta-data android:name="Mob-AppKey" android:value="您的AppKey"/>
<meta-data android:name="Mob-AppSecret" android:value="您的AppSecret"/>
其中Mob-AppKey與Mob-AppSecret是自己申請時(shí)后臺(tái)分配的,根據(jù)后臺(tái)數(shù)據(jù)如實(shí)替換即可
- 在assets文件夾的ShareSDK.xml文件下舒帮,填寫每個(gè)平臺(tái)需要的參數(shù)会喝,例如
<Wechat
Id="4"
SortId="4"
AppId="xxx"
AppSecret="xxx"
userName="xxx"
path="pages/index/index.html?id=1"
BypassApproval="true"
Enable="true" />
每個(gè)字段的意思詳見上面鏈接的官網(wǎng)教程
- 啟動(dòng)分享
在需要彈出分享頁面進(jìn)行分享的頁面,添加以下方法
private void showShare() {
OnekeyShare oks = new OnekeyShare();
//關(guān)閉sso授權(quán)
oks.disableSSOWhenAuthorize();
// 分享時(shí)Notification的圖標(biāo)和文字 2.5.9以后的版本不 調(diào)用此方法
//oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
// title標(biāo)題玩郊,印象筆記肢执、郵箱、信息译红、微信预茄、人人網(wǎng)和QQ空間使用
oks.setTitle(getString(R.string.share));
// titleUrl是標(biāo)題的網(wǎng)絡(luò)鏈接,僅在人人網(wǎng)和QQ空間使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本临庇,所有平臺(tái)都需要這個(gè)字段
oks.setText("我是分享文本");
// imagePath是圖片的本地路徑反璃,Linked-In以外的平臺(tái)都支持此參數(shù)
oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片
// url僅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我對這條分享的評論,僅在人人網(wǎng)和QQ空間使用
oks.setComment("我是測試評論文本");
// site是分享此內(nèi)容的網(wǎng)站名稱假夺,僅在QQ空間使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此內(nèi)容的網(wǎng)站地址淮蜈,僅在QQ空間使用
oks.setSiteUrl("http://sharesdk.cn");
// 啟動(dòng)分享GUI
oks.show(this);
}
分享朋友圈時(shí),可以分享網(wǎng)絡(luò)圖片或本機(jī)圖片已卷,本機(jī)圖片需要設(shè)置 oks.setImagePath("/sdcard/test.jpg")梧田,網(wǎng)絡(luò)圖片需要設(shè)置 oks.setImageUrl(url);//url即為網(wǎng)絡(luò)圖片鏈接。
- 分享回調(diào)
有時(shí)候我們要做活動(dòng)侧蘸,分享成功后贈(zèng)送優(yōu)惠券裁眯,這時(shí)候我們可以設(shè)置相關(guān)回調(diào)
oks.setCallback(new PlatformActionListener() {
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
}
@Override
public void onCancel(Platform platform, int i) {
}
});
可以看到,這里面定義了三個(gè)方法
- onComplete讳癌,分享成功的回調(diào)穿稳,可以在這里調(diào)用接口,贈(zèng)送優(yōu)惠券等
- onError晌坤,分享發(fā)生錯(cuò)誤的回調(diào)
- onCancel逢艘,分享取消的回調(diào)
我們一般關(guān)注第一個(gè)onComplete就行
至此旦袋,完整的分享過程已經(jīng)全部結(jié)束,可以歡快的進(jìn)行相關(guān)平臺(tái)的分享了
分享問題與解決
分享完成后選擇留在微信它改,分享回調(diào)失效
此問題暫時(shí)無解……真的- -官方論壇也說沒有解決辦法……
所以取巧的解決辦法是疤孕,在用戶調(diào)用分享的時(shí)候就調(diào)用接口發(fā)放優(yōu)惠券,缺點(diǎn)是可能會(huì)造成假分享在安卓6.0以上的系統(tǒng)分享界面打不開
本來以為是部分手機(jī)問題央拖,借了很多手機(jī)發(fā)現(xiàn)都有這個(gè)問題祭阀,于是想到了動(dòng)態(tài)權(quán)限問題,可是不知道是什么權(quán)限鲜戒,直到在文檔里發(fā)現(xiàn)了這段話
微信并無實(shí)際的分享網(wǎng)絡(luò)圖片和分享bitmap的功能专控,如果設(shè)置了網(wǎng)絡(luò)圖片,此圖片會(huì)先下載會(huì)本地遏餐,之后再當(dāng)作本地圖片分享踩官,因此延遲較大。bitmap則好一些境输,但是由于bitmap并不知道圖片的格式蔗牡,因此都會(huì)被當(dāng)作png編碼,再提交微信客戶端嗅剖。此外辩越,SHARE_EMOJI支持gif文件,但是如果使用imageData信粮,則默認(rèn)只是提交一個(gè)png圖片黔攒,因?yàn)閎itmap是靜態(tài)圖片。
sharesdk會(huì)將網(wǎng)絡(luò)圖片或者圖片都下載到本地强缘,所以我們這邊必須申請存儲(chǔ)權(quán)限督惰。
在申請完存儲(chǔ)權(quán)限后分享,成功旅掂!問題解決