关于oneKeyshare用法

由于项目需求,要加入分享功能,所以研究了一下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>


按要求每个appid appkey都自己申请得到,微信时间可能稍微长点,需要七天,其他的都好申请。
将上面xml中的appid appkey按要求填写好,然后一键分享功能就大功告成。




发布了49 篇原创文章 · 获赞 5 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/hehe0705/article/details/40748499