U-share分享详解

U-share分享

官方集成文档地址

1. 获取SDK

最新SDK地址

  1. 全选分享平台,(注意:微信 新浪微博 QQ 均有精简和完整.推荐完整版因为现在的手机内存大的可拍不差你这几百Kb)

  2. 下载demo工程(AS或ECLIPSE)

  3. 解压SDK,使用友盟集成工具选在自己需要的分享平台,选择AS或ECLIPSE,选择是否使用分享面板 ok既可生成所需的jar包 res src(若第1步操作有误,则可能有些jar及资源文件生成不出来)

2. 工程配置

  1. 拷贝jar和res以及src到相应目录下(WX,支付宝,易信要创建相应的文件夹在自己的包下 具体名字请看官方demo)

  2. 修改AndroidManiFest

  • 权限
<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.INTERNET" />
<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" />
  • 加入sdk中需要的Activity
<!--新浪微博-->
  <activity
            android:name=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
<!--微信-->
   <activity
        android:name=".wxapi.WXEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--支付宝-->
    <activity
        android:name=".apshare.ShareEntryActivity"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:exported="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--QQ完整版-->
    <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            android:noHistory="true" >

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="tencent100424468" />
            </intent-filter>

    </activity>

    <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>
<!--分享编辑页(只有新浪微博精简版,豆瓣人人腾讯微博领英twitter需要)-->
    <activity
        android:name="com.umeng.socialize.editorpage.ShareActivity"
        android:theme="@style/Theme.UMDefault"
        android:excludeFromRecents="true"
        />
<!--添加友盟appkey-->
    <meta-data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    </meta-data>

  • 修改build.gradle文件
   buildTypes {
        release {
            // 是否进行混淆
            minifyEnabled true
            // 混淆文件的位置
            signingConfig signingConfigs.debug
           proguardFiles 'proguard-rules.pro'
        }

        debug {
            minifyEnabled true
            signingConfig signingConfigs.debug
            proguardFiles 'proguard-rules.pro'
        }
    }
  signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
  • 将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore,官方给出的说法是不配置debug可能会影响授权 暂未发现 楼主会跟进的.

  • 配置各个平台的appkey(创建application文件)

import android.app.Application;
import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;
import com.umeng.socialize.common.QueuedWork;


public class App extends Application {

    @Override
    public void onCreate() {

        super.onCreate();
        //开启debug模式,方便定位错误,具体错误检查方式可以查看http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式
        Config.DEBUG = true;
        QueuedWork.isUseThreadPool = false;
        UMShareAPI.get(this);
    }

    //各个平台的配置,建议放在全局Application或者程序入口
    {
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //豆瓣RENREN平台目前只能在服务器端配置
        PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
        PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
        PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
        PlatformConfig.setAlipay("2015111700822536");
        PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
        PlatformConfig.setPinterest("1439206");
        PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
        PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
        PlatformConfig.setVKontakte("5764965", "5My6SNliAaLxEm3Lyd9J");
        PlatformConfig.setDropbox("oz8v5apet3arcdy", "h7p2pjbzkkxt02a");

    }
}

3. 分享

  • 在需要弹出分享面板选择页的地方调用下列代码(分享链接示例)
        UMWeb web = new UMWeb("https://www.hao123.com/");
        web.setTitle("This is music title");//标题
        web.setThumb(new UMImage(this, "https://mobile.umeng.com/images/pic/home/social/img-1.png"));//缩略图
        web.setDescription("my description");//描述

        new ShareAction(MainActivity.this)
                .withMedia(web)
                .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN, SHARE_MEDIA.QZONE, SHARE_MEDIA.SMS)
                .setCallback(umShareListener)
                .open();

  • 回调与监听
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);

    }

    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();
        }
    };

4. 让世界更美好(一些走过的坑)

关于分享其实做到如上步骤基本上也就结束了,但是实际用的时候也会有些出入下面介绍一些经验

  • 各个平台的appkey一定要配对
  • 配对了appkey微信分享不了(what?不要慌错不在你这有可能是SDK的BUG取论坛看看吧)
  • 新浪微博不配appkey直接调不起来,配了未审核的appkey可以调起但分享不成功,审核过了就好
    好啦大工告成
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容