QQ第三方分享详解

在友盟中下载QQ的SDK:

http://bbs.umeng.com/portal.php

SDK文件目录介绍

  • main -- 核心库

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms -- 分享平台库

QQ精简版(SocialSDK_QQ_Simplify.jar)

这里只列举QQ、最终platforms文件夹内包含的文件与下载页面选择的平台有关

  • shareboard

umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加) 
umeng_social_shareboard.jar

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

修改AndroidManiFest

首先需要添加权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
其中由于QQ登陆模块重复添加的权限


友盟分享分为两种形式:

  • 分享面板分享,用户可以调用我们提供的默认分享面板UI,打开分享面板,然后点击分享面板的对应平台进行分享
  • 直接分享,用户可以自己写分享按钮,或者触发事件,然后调用我们的分享方法,进行分享。

设置分享链接

分享链接可以使用UMWeb进行分享:

UMWeb  web = new UMWeb(Defaultcontent.url);
        web.setTitle("This is music title");//标题
        web.setThumb(thumb);  //缩略图
        web.setDescription("my description");//描述

 打开分享面板

在需要弹出分享面板选择页的地方调用下列代码

new ShareAction(MainActivity.this)
        .withText("hello")
	要分享的网页
        .withMedia(web)
	分享的APP
		setDisplayList中设置的枚举参数就是最终分享面板中显示的平台,
		所传入参数的顺序即为最终面板分享平台的排列顺序
        .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
        .setCallback(umShareListener).open();

在分享所在的Activity里复写onActivityResult方法,注意不可在fragment中实现,如果在fragment中调用分享,

在fragment依赖的Activity中实现,如果不实现onActivityResult方法,会导致分享或回调无法正常进行

onActivityResult实现方法如下:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

    }


直接分享

简而言之,直接分享就是在用户自己的界面组件中插入分享行为

分享可以通过如下代码实现,不同平台只要传入不同的SHARE_MEDIA即可。

new ShareAction(MainActivity.this).setPlatform(SHARE_MEDIA.QQ)
                        .withText("hello")
                        .setCallback(umShareListener)
                        .share();

其中umShareListener为回调监听,构建如下,其中分享成功会回调onComplete,取消分享回调onCancel,分享错误回调onError,对应的错误信息可以用过onError的Throwable参数来打印

    private UMShareListener umShareListener = new UMShareListener() {
     @Override
        public void onStart(SHARE_MEDIA platform) {
           //分享开始的回调
        }
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Log.d("plat","platform"+platform);

                Toast.makeText(MainActivity.this, platform + " 分享成功啦", Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(MainActivity.this,platform + " 分享失败啦", Toast.LENGTH_SHORT).show();
            if(t!=null){
                Log.d("throw","throw:"+t.getMessage());
            }
        }

        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(MainActivity.this,platform + " 分享取消了", Toast.LENGTH_SHORT).show();
        }
    };

详细代码见http://dev.umeng.com/social/android/share-detail


	compile 'com.github.bumptech.glide:glide:3.8.0'
	compile 'de.hdodenhof:circleimageview:2.1.0'

	在Gradle Scripts的工程下加入这两个JAR包

	Glide是和Imageloader一样的图片展示控件
	使用方法:
 
    
 
    
	Glide.with(MainActivity.this) //上下文
	.load(map.get("iconurl"))  //要在登陆中展示的User的图片
	.into(img);		   //xml布局中的控件

	
 
    
	circleimageview   //直接在xml中使用
	 
	<de.hdodenhof.circleimageview.CircleImageView
   		 android:layout_width="50dp"
   		 android:layout_height="50dp"
   		 android:id="@+id/img"
    />
	效果展示是一张圆形的图片

	
	
 
   




你可能感兴趣的:(QQ第三方分享详解)