zoukankan      html  css  js  c++  java
  • andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能

    前言:在自己的学习过程中的一些操作,分享一些理解。

    下面将说明什么:


    下载链接:http://download.csdn.net/detail/u014608640/7490357


    首先。我们须要去ShareSdk官方站点http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件:

    依据我自己在学习的过程中仅仅用到了第一个目录的

    libs文件夹的2个项目,这2个是必需要的。是ShareSdk提供的,然后需要将这2个放入到自己做的项目其中去,在Res文件夹下有一个

    ShareSdk.xml文件  这个非常重要的。大概意思就是:提供各个client是否能分享。将这个也要拷贝到自己做的项目的assets 文件夹下


    第二步,我们须要将第3个文件Sample打开。里面有项目须要用到的一些类,

    这个也须要导入到项目中去的,会自己主动生成一个小项目。注意:不是主程序哦。

    这个程序中能够进行測试的,秘钥是123456


    第三步:配置AndroidManifest.xml

    <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"/>


    其它配置:

      <!-- Share SDK START -->
            <activity
                android:name="cn.sharesdk.framework.ShareSDKUIShell"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:windowSoftInputMode="stateHidden|adjustResize" >
    
                <!--
                	AuthorizeAdapter表示一个继承自cn.sharesdk.framework.authorize.AuthorizeAdapter
                	的类。这个类能够监听到页面的生命周期。也能够获取授权页面的各种UI控件。 
                	开发人员能够通过继承AuthorizeAdapter,重写其方法。并获取各种UI来自己定义这个页面的行为。
                -->
                <meta-data
                    android:name="AuthorizeAdapter"
                    android:value="cn.sharesdk.demo.MyAdapter" />
    
                <!--
                	QZoneWebShareAdapter表示一个继承自cn.sharesdk.tencent.qzone.QZoneWebShareAdapter
                	的类,这个类能够监听到页面的生命周期。也能够获QQ空间网页分享权页面的各种UI控件。

    开发人员能够通过继承QZoneWebShareAdapter,重写其方法,并获取各种UI来自己定义这个页面的行为。 --> <meta-data android:name="QZoneWebShareAdapter" android:value="cn.sharesdk.demo.MyQZoneWebShareAdapter" /> <!-- Dropbox的SSO功能需要在此处加入一个对ACTION_VIEW事件的过滤器,当中的scheme是 “db-”前缀再开发人员应用的加上appKey。假设此过滤器不设置。则不能完毕SSO功能授权 --> <intent-filter> <data android:scheme="db-7janx53ilz11gbs" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <!-- 假设集成QQ分享。或者使用QQclient来进行QQ空间的分享,需要在此处加入一个对ACTION_VIEW 事件的过滤器,当中的scheme是“tencent”前缀再开发人员应用的加上appId。假设此过滤器不设置。 则分享结束以后不能得到正确的回调 --> <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity> <!-- 微信分享回调 --> <activity android:name="cn.sharesdk.demo.wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- Share SDK FINISH -->


    配置完之后,就给大家说一下加入分享代码

    在您的代码中调用此方法,就可以打开一键分享功能进行分享

    列入一个button:

                            ShareSDKUtil shareSDKUtil = new ShareSDKUtil(this);
    			shareSDKUtil.setPage(getWindow().getDecorView());
    			shareSDKUtil.showShare(false, null);


    核心代码:

    public class ShareSDKUtil {
    
    	private Context mContext;
    
    	private View mView;
    
    	public ShareSDKUtil(Context context) {
    		this.mContext = context;
    	}
    
    	public Context getContext() {
    		return mContext;
    	}
    
    	/**
    	 * ShareSDK集成方法有两种</br>
    	 * 1、第一种是引用方式。比如引用onekeyshare项目。onekeyshare项目再引用mainlibs库</br>
    	 * 2、另外一种是把onekeyshare和mainlibs集成到项目中。本样例就是用另外一种方式</br> 请看“ShareSDK
    	 * 使用说明文档”,SDK下载文件夹中 </br> 或者看网络集成文档
    	 * http://wiki.sharesdk.cn/Android_%E5%BF%AB
    	 * %E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97
    	 * 3、混淆时。把sample或者本样例的混淆代码copy过去,在proguard-project.txt文件里
    	 * 
    	 * 
    	 * 平台配置信息有三种方式: 1、在我们后台配置各个微博平台的key
    	 * 2、在代码中配置各个微博平台的key。http://sharesdk.cn/androidDoc
    	 * /cn/sharesdk/framework/ShareSDK.html
    	 * 3、在配置文件里配置,本样例里面的assets/ShareSDK.conf,
    	 */
    	public void showShare(boolean silent, String platform) {
    		final OnekeyShare oks = new OnekeyShare();
    		oks.setNotification(R.drawable.app_icon, getContext().getString(R.string.app_name));
    		oks.setAddress("12345678901");
    		oks.setTitle(getContext().getString(R.string.app_name));
    		oks.setTitleUrl("http://www.xx.com");
    		oks.setText("555555555555555555");
    		
    //		oks.setImagePath(Environment.getExternalStorageDirectory().getAbsolutePath()+"/AndyDemo/ScreenImage/Screen_1.png");  //weixin
    //		 oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");//MainActivity.TEST_IMAGE_URL
    		oks.setImageUrl("/sdcard/AndyDemo/ScreenImage/Screen_1.png");
    		// 不能为空。否则微信分享类型为文本
    		oks.setUrl("http://www.xx.com");// WeiXin
    		// oks.setFilePath(MainActivity.TEST_IMAGE);//WeiXin
    		// oks.setComment(getContext().getString(R.string.share));// QZone
    		oks.setSite(getContext().getString(R.string.app_name));// QZone
    		oks.setSiteUrl("http://www.xx.com");// QZone
    		// 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进行截屏分享
    		// Add by yinghui.hong 取消凝视的同一时候须要将setImagePath凝视,见{@link ShareCore share}
    //		oks.setViewToShare(getPage());
    		oks.setViewToShare((Activity)getContext());
    		// 去除凝视,可令编辑页面显示为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(getContext());
    	}
    
    	public void setPage(View view) {
    		this.mView = view;
    	}
    
    	protected View getPage() {
    		return mView;
    	}


    我自己在做的过程中遇到的问题也说一下:  做这些功能分为2种。一种是须要审核的,我做的就是第一种,第2种是不须要审核的。这个大家能够去看下API。

    像新浪和微信.QQ空间必需要审核才干够分享的。审核的时间有点长,在微信审核的时候那个应用签名一定要注意了,不能填错哦。否则就算审核成功了,也无法

    分享的哦。


    QQ空间是支持网络图片,我做的时候本地图片会显示不出来,查了下原因。是由于QQ空间没提过这个功能。所以仅仅能分享文字!








    
    

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    bzoj3930 [CQOI2015]选数
    bzoj4916 神犇和蒟蒻
    bzoj3439 Kpm的MC密码
    bzoj2535 [Noi2010]航空管制
    bzoj2600 [Ioi2011]ricehub
    控制和机器学习书籍推荐
    圆周率100位可以这样速记
    从哥德巴赫说开去(3)
    第一届熊赛试题解答
    Mathematical Reflections
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4854392.html
Copyright © 2011-2022 走看看