由於項目需求,要加入分享功能,所以研究了一下oneKeyShare,下面是它的用法,方便大家使用;
首先引入onekeyshare工程,下載地址;
第二步:選擇你要分享的事件應該寫到哪裏,然後粘貼下面方法,
private String shareurl = RequestUrl.pathDownloadApk;
/**
* 展示一鍵分享
*
* @param silent
* 是否直接分享
* @param platform
* 平臺
*/
private void showShare(boolean silent, String platform) {
final OnekeyShare oks = new OnekeyShare();
oks.setNotification(R.drawable.ic_launcher, view.getContext()
.getString(R.string.app_name));
// oks.setAddress("12345678901");
// oks.setTitle(MainActivity.this.getString(R.string.evenote_title));
// oks.setTitleUrl("http://sharesdk.cn");
oks.setTitle(view.getContext().getString(R.string.app_name));
oks.setText("惠話網絡電話下載地址"
+ shareurl
+ " (分享自:"
+ view.getContext()
.getString(R.string.app_name) + ")");
oks.setUrl(shareurl);
// oks.setImagePath(MainActivity.TEST_IMAGE);
// oks.setImageUrl(MainActivity.TEST_IMAGE_URL);
// oks.setUrl(url);
// oks.setFilePath(MainActivity.TEST_IMAGE);
// oks.setComment(MainActivity.this.getString(R.string.share));
// oks.setSite(MainActivity.this.getString(R.string.app_name));
// oks.setSiteUrl(url);
// oks.setVenueName("ShareSDK");
// oks.setVenueDescription("This is a beautiful place!");
// oks.setLatitude(23.056081f);
// oks.setLongitude(113.385708f);
oks.setSilent(silent);
if (platform != null) {
oks.setPlatform(platform);
}
// 取消註釋,可以實現對具體的View進行截屏分享
// oks.setViewToShare(getPage());
// 去除註釋,可令編輯頁面顯示爲Dialog模式
// oks.setDialogMode();
// 去除註釋,在自動授權時可以禁用SSO方式
// oks.disableSSOWhenAuthorize();
// 去除註釋,則快捷分享的操作結果將通過OneKeyShareCallback回調
// oks.setCallback(new OneKeyShareCallback());
// oks.setShareContentCustomizeCallback(new
// ShareContentCustomizeDemo());
// 去除註釋,演示在九宮格設置自定義的圖標
// Bitmap logo = BitmapFactory.decodeResource(menu.getResources(),
// R.drawable.ic_launcher);
// String label = menu.getResources().getString(R.string.app_name);
// OnClickListener listener = new OnClickListener() {
// public void onClick(View v) {
// String text = "Customer Logo -- ShareSDK " +
// ShareSDK.getSDKVersionName();
// Toast.makeText(menu.getContext(), text, Toast.LENGTH_SHORT).show();
// oks.finish();
// }
// };
// oks.setCustomerLogo(logo, label, listener);
// 去除註釋,則快捷分享九宮格中將隱藏新浪微博和騰訊微博
// oks.addHiddenPlatform(SinaWeibo.NAME);
// oks.addHiddenPlatform(TencentWeibo.NAME);
oks.addHiddenPlatform(QZone.NAME);
oks.addHiddenPlatform(WechatFavorite.NAME);
oks.addHiddenPlatform(Facebook.NAME);
oks.addHiddenPlatform(Twitter.NAME);
oks.addHiddenPlatform(Renren.NAME);
oks.addHiddenPlatform(KaiXin.NAME);
oks.addHiddenPlatform(Email.NAME);
oks.addHiddenPlatform(ShortMessage.NAME);
oks.addHiddenPlatform(SohuMicroBlog.NAME);
oks.addHiddenPlatform(NetEaseMicroBlog.NAME);
oks.addHiddenPlatform(Douban.NAME);
oks.addHiddenPlatform(YouDao.NAME);
oks.addHiddenPlatform(SohuSuishenkan.NAME);
oks.addHiddenPlatform(Evernote.NAME);
oks.addHiddenPlatform(LinkedIn.NAME);
oks.addHiddenPlatform(GooglePlus.NAME);
oks.addHiddenPlatform(FourSquare.NAME);
oks.addHiddenPlatform(Pinterest.NAME);
oks.addHiddenPlatform(Flickr.NAME);
oks.addHiddenPlatform(Tumblr.NAME);
oks.addHiddenPlatform(Dropbox.NAME);
oks.addHiddenPlatform(VKontakte.NAME);
oks.addHiddenPlatform(Instagram.NAME);
oks.addHiddenPlatform(Yixin.NAME);
oks.addHiddenPlatform(YixinMoments.NAME);
oks.addHiddenPlatform(Mingdao.NAME);
oks.addHiddenPlatform(TencentWeibo.NAME);
oks.addHiddenPlatform(WechatMoments.NAME);
oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
oks.show(view.getContext());
}
// 把圖片從drawable複製到sdcard中
// copy the picture from the drawable to sdcard
private void initImagePath() {
try {
if (Environment.MEDIA_MOUNTED.equals(Environment
.getExternalStorageState())
&& Environment.getExternalStorageDirectory().exists()) {
imagePath = Environment.getExternalStorageDirectory()
.getAbsolutePath() + FILE_NAME;
} else {
imagePath = view.getContext().getApplicationContext()
.getFilesDir().getAbsolutePath()
+ FILE_NAME;
}
File file = new File(imagePath);
if (!file.exists()) {
file.createNewFile();
pic = BitmapFactory.decodeResource(view.getResources(),
R.drawable.ic_launcher);
FileOutputStream fos = new FileOutputStream(file);
pic.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
}
} catch (Throwable t) {
t.printStackTrace();
imagePath = null;
}
}
/**
* 快捷分享項目現在添加爲不同的平臺添加不同分享內容的方法。 本類用於演示如何區別Twitter的分享內容和其他平臺分享內容。
*/
public class ShareContentCustomizeDemo implements
ShareContentCustomizeCallback {
@Override
public void onShare(Platform platform,
cn.sharesdk.framework.Platform.ShareParams paramsToShare) {
if (SinaWeibo.NAME.equals(platform.getName())) {
// paramsToShare.setImagePath(imagePath);
// paramsToShare.setImageUrl(imageUrl);
} else if (QQ.NAME.equals(platform.getName())) {
paramsToShare.setImagePath(imagePath);
// paramsToShare.setImageUrl(imageUrl);
// paramsToShare.setText(articleTitle + shareurl);
} else if (Wechat.NAME.equals(platform.getName())) {
}
}
}
這幾個方法粘到你所需要加入一鍵分享的類中之後,不要忘記在oncreat方法中加入
// 分享
ShareSDK.initSDK(view.getContext());
new Thread() {
public void run() {
initImagePath();
}
}.start();
然後再在你的監聽事件中調用 showShare(boolean silent, String platform)方法 兩個參數第一個false,第二個null
第三步:
在AndroidManifest.xml中加入
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" />
最後在assets文件夾目錄下加入
ShareSDK.xml
其中內容粘入如下代碼:
<?xml version="1.0" encoding="utf-8"?>
<DevInfor>
<!--
說明:
1、表格中的第一項
<ShareSDK
AppKey="api20" />
是必須的,其中的AppKey是您在ShareSDK上註冊的開發者帳號的AppKey
2、所有集成到您項目的平臺都應該爲其在表格中填寫相對應的開發者信息,以新浪微博爲例:
<SinaWeibo
Id="1"
SortId="1"
AppKey="568898243"
AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
RedirectUrl="http://www.sharesdk.cn"
Enable="true" />
其中的SortId是此平臺在分享列表中的位置,由開發者自行定義,可以是任何整型數字,數值越大
越靠後AppKey、AppSecret和RedirectUrl是您在新浪微博上註冊開發者信息和應用後得到的信息
Id是一個保留的識別符,整型,ShareSDK不使用此字段,供您在自己的項目中當作平臺的識別符。
Enable字段表示此平臺是否有效,布爾值,默認爲true,如果Enable爲false,即便平臺的jar包
已經添加到應用中,平臺實例依然不可獲取。
各個平臺註冊應用信息的地址如下:
新浪微博 http://open.weibo.com
騰訊微博 http://dev.t.qq.com
QQ空間 http://connect.qq.com/intro/login/
微信好友 http://open.weixin.qq.com
Facebook https://developers.facebook.com
Twitter https://dev.twitter.com
人人網 http://dev.renren.com
開心網 http://open.kaixin001.com
搜狐微博 http://open.t.sohu.com
網易微博 http://open.t.163.com
豆瓣 http://developers.douban.com
有道雲筆記 http://note.youdao.com/open/developguide.html#app
印象筆記 https://dev.evernote.com/
Linkedin https://www.linkedin.com/secure/developer?newapp=
FourSquare https://developer.foursquare.com/
搜狐隨身看 https://open.sohu.com/
Flickr http://www.flickr.com/services/
Pinterest http://developers.pinterest.com/
Tumblr http://www.tumblr.com/developers
Dropbox https://www.dropbox.com/developers
Instagram http://instagram.com/developer#
VKontakte http://vk.com/dev
-->
<ShareSDK AppKey="???????????" />
<!-- 修改成你在sharesdk後臺註冊的應用的appkey" -->
<!-- ShareByAppClient標識是否使用微博客戶端分享,默認是false -->
<SinaWeibo
AppKey="??????????????"
Enable="true"
Id="1"
RedirectUrl="http://www.sharesdk.cn"
ShareByAppClient="true"
SortId="1" />
<Wechat
AppId="???????????????????"
AppSecret="?????????????????????"
BypassApproval="true"
Enable="true"
Id="4"
SortId="2" />
<QQ
AppId="????????"
AppKey="????????????"
Enable="true"
Id="7"
SortId="3" />
</DevInfor>
將上面xml中的appid appkey按要求填寫好,然後一鍵分享功能就大功告成。