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空间没提过这个功能。所以仅仅能分享文字!








    
    

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

  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4854392.html
Copyright © 2011-2022 走看看