关于ShareSDK的图文分享

小弟第一次写博客,有什么对不住的就请多原谅!

废话不多说,先上图:

       

其实呢,这个DEMO是比较简单的,下面一步一步教大家:

项目结构:

1.布局(布局很简单啦,就一个Button)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button 
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="一键分享"/>

</RelativeLayout>

2.既然咱们是要用ShareSDK来实现图文分享,那么就要先去他的官网下载所需要的SDK (SDK下载),你可以勾选你所需要的分享平台(比如微信,新浪...)

(PS:你还可以取下载官网的DEMO的看看,也不错)

平台lib :   ..\ShareSDK for Android\Libs\MainLibs\libs        框架lib:...\ShareSDK for Android\Libs\OneKeyShare\libs    

图标:.......\ShareSDK for Android\Libs\OneKeyShare\res\drawable-xhdpi    

XML: ...\ShareSDK for Android\Res\ShareSDK.xml (这个放在assets)

3.ShareSDK.xml 

主要是要到ShareSDK 官网去注册一个AppKey

修改里面的一些值,你下载的ShareSDK.xml 有详细的注释,这里就不多说了 

4.Copy  你下载目录中的 ....\ShareSDK for Android\Libs\OneKeyShare\src\cn\sharesdk\onekeyshare 这个包

(这是官方做的相当于一个框架吧)

5.重点来了 主要是写一个onkey(String platform) 这个方法

下面是代码,都有详细的注释:

package com.example.sharesdk_onkeysharedemo;

import java.io.File;
import java.io.InputStream;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button=(Button)findViewById(R.id.button1);
		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					onkey(null);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					Toast.makeText(getApplicationContext(), "请检查您的程序是否安装", 0).show();
				}
			}
		});
	}

	private void onkey(String platform) {
		// TODO Auto-generated method stub
		ShareSDK.initSDK(this); //初始化 (必须)
		OnekeyShare oks = new OnekeyShare();
		//关闭sso授权
		oks.disableSSOWhenAuthorize();
		 // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
		oks.setTitle("标题");
		 // titleUrl是标题的网络链接,仅在人人网和QQ空间使用
		oks.setTitleUrl("www.baidu.com");
		 // text是分享文本,所有平台都需要这个字段
		oks.setText("文本内容");
		// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
		// oks.setImagePath("/sdcard/test.jpg");
		
		 //costume.getLargepic()
		// InputStream abpath = getClass().getResourceAsStream("/assets/girl.jpg");

		 //String path ="file:///android_asset/girl.jpg";   //以name存在目录中
		 //分享的图片  (这里是网络图片的地址)
		 String path ="http://f.hiphotos.baidu.com/image/pic/item/b219ebc4b74543a977adc9d01d178a82b9011473.jpg"; 
		oks.setImageUrl(path);//新浪目前没有通过审核没有申请高级权限,在新浪上会分享失败,应用通过审核后去申请高级权限就可以设置图片了[设置imageurl需要在开放平台申请高级权限]
		//url在微信(包括好友、朋友圈收藏)和易信(包括好友和朋友圈)中使用,否则可以不提供 
		oks.setUrl("www.baidu.com");
		//filePath是待分享应用程序的本地路劲,仅在微信(易信)好友和Dropbox中使用,否则可以不提供
		oks.setFilePath(path);
		//comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供 
		oks.setComment(path);
		//site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供 
		oks.setSite("网站名称");
		//siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供 
		oks.setSiteUrl("www.baidu.com");
		//foursquare分享时的地方名
		oks.setVenueName("ShareSDK");
		//foursquare分享时的地方描述
		oks.setVenueDescription("This is a beautiful place!");
		//分享地纬度,经度,新浪微博、腾讯微博和foursquare支持此字段
		oks.setLatitude(23.056081f);
		oks.setLongitude(113.385708f);
		//是否直接分享
		oks.setSilent(false);
		//设置编辑页的初始化选中平台
		if (platform != null) {
			oks.setPlatform(platform);
		}


		// 去除注释,可令编辑页面显示为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.show(MainActivity.this);
	}

	
	/**
	 * 快捷分享项目现在添加为不同的平台添加不同分享内容的方法。
	 *本类用于演示如何区别Twitter的分享内容和其他平台分享内容。
	 */
	/*class ShareContentCustomizeDemo implements ShareContentCustomizeCallback {

	        public void onShare(Platform platform, ShareParams paramsToShare) {
	                // 改写twitter分享内容中的text字段,否则会超长,
	                // 因为twitter会将图片地址当作文本的一部分去计算长度
	                if (Twitter.NAME.equals(platform.getName())) {
	                        String text = platform.getContext().getString("看不");
	                        paramsToShare.setText(text);
	                }
	        }

	}*/
	

	//然后:在后面加上斜杠,在加上文件名 

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		ShareSDK.stopSDK(this);//记住要结束
	}
}
6.记住把VALUES 里面的文件放进去  (官网DEMO有,我的项目也有)

7.最后别忘了  AndroidManifest.xml 文件 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sharesdk_onkeysharedemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />
	<!--权限  -->
    <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" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.sharesdk_onkeysharedemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </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="cn.sharesdk.demo.wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 易信分享回调 -->
        <activity
            android:name="cn.sharesdk.demo.yxapi.YXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    </application>

</manifest>
8.(不要微信和易信分享回调的朋友可以忽略)

如果不要的话,上面那2个Activity可以不注册, 需要回调的话 那么就要在onkey(String platform)  里面去掉注释

// 去除注释,则快捷分享的操作结果将通过OneKeyShareCallback回调
		// oks.setCallback(new OneKeyShareCallback());
		

有兴趣的朋友可以试试 
9.因为有些平台分享的要求有点不一样,比如新浪只能是150个字(PS:好像是150字),那么我们就需要区别平台来进行分享
//oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
去除注释,在 ShareContentCustomizeDemo 类里面区分不同的平台
package cn.net.brisc.wuhan.museum.ui;

import java.io.UnsupportedEncodingException;

import cn.net.brisc.wuhan.museum.Conf;
import cn.net.brisc.wuhan.museum.R;
import cn.net.brisc.wuhan.uitl.CutString;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.onekeyshare.ShareContentCustomizeCallback;
import cn.sharesdk.wechat.favorite.WechatFavorite;
import cn.sharesdk.wechat.moments.WechatMoments;

public class ShareContentCustomizeDemo implements ShareContentCustomizeCallback {

	@Override
	public void onShare(Platform platform, ShareParams paramsToShare) {
		// TODO Auto-generated method stub
		if ("SinaWeibo".equals(platform.getName())) {
				//String text = platform.getContext().getString(R.string.share_content_short);
				//String st = new String(CutString.sinaweiboString.getBytes("gbk"),"UTF-8");
				paramsToShare.setText(CutString.sinaweiboString+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
				System.out.println(CutString.sinaweiboString+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
		}/*else if("Wechat".equals(platform.getName())){
			//paramsToShare.setText(CutString.Wechat+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
			//paramsToShare.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
			paramsToShare.setText(CutString.Wechat+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
			paramsToShare.setTitle(CutString.title);
			paramsToShare.setImagePath(Conf.SDCARD+CutString.imageid+".jpg");
			System.out.println("微信分享内容 "+CutString.title+"++++"+Conf.SDCARD+CutString.imageid+".jpg");
		}else if("WechatFavorite".equals(platform.getName()) ||"WechatMoments".equals(platform.getName()) ){
			//paramsToShare.setText(CutString.Wechat+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
			//paramsToShare.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
			paramsToShare.setText(CutString.Wechat+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");
			paramsToShare.setTitle(CutString.title);
			paramsToShare.setShareType(platform.SHARE_IMAGE);
			paramsToShare.setImagePath(Conf.SDCARD+CutString.imageid+"");
			System.out.println("朋友圈 "+CutString.title+"++++"+Conf.SDCARD+CutString.imageid+".jpg");
			
		}*/
	}

}

PS:  小弟处作,有问题的地方 或者不足的地方请大家提出来。。。谢谢!~
多多关照呀!

DEMO下载

这也是DEMO,但是要1分,有分的就支援支援.谢谢


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值