集成友盟,第三方分享、登录

友盟集成总得来说可以分为:
1.友盟官方账号申请+SDK集成
2.第三方账号申请+应用创建
3.将三方的appId和appKey配置到应用
4.分享和登录Api调取实现分享和登录

1.下载SDK,导入jar包

将sdk里面的jar和资源拷贝到项目中:
    1.G:\三方\友盟\sdk\Android\analytics\analytics_android_8.0.2:统计的sdk
    2.G:\三方\友盟\sdk\Android\common\common_android_2.0.2\normal,基础的sdk(必须)
    3.G:\三方\友盟\sdk\Android\share\share_android_6.9.4:分享的sdk
    4.配置完成后:libs+图片+布局+values对应都有相应的资源

2.配置清单文件 AndroidManifest.xml

    
    
    
    
    
  
    
        


        
        
        

        
        
            
                
                
            

        

        
            
                

                
                

                
            
        
        

        

3.微信需要创建如下类

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity并继承WXCallbackActivity。
集成友盟,第三方分享、登录_第1张图片
图片.png
public class WXEntryActivity extends WXCallbackActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wxentry);
    }
}

4.创建Application,注意:需要在清单文件配置

public class BaseApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        UMConfigure.init(this, "5ca5719e3fc195b491001175"
                , "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");

        //todo 三方ak没有申请
        ///需要设置各个平台的appkey:
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
        //豆瓣RENREN平台目前只能在服务器端配置
        PlatformConfig.setSinaWeibo("2248884681", "7ed722f6244fb5ce4504b4fe46c394bb",
                "http://sns.whalecloud.com");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");

       /* PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        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");
        PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");*/
    }
}

5.在activity_main.xml文件下




    

6.带面板分享

    /**
     * 带面板的分享
     */
    private void shareBorad() {
        UMImage thumb = new UMImage(this, "https://ws1.sinaimg.cn/large/0065oQSqly1fw8wzdua6rj30sg0yc7gp.jpg");
        thumb.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,
        new ShareAction(MainActivity.this).withText("hello")
                .withMedia(thumb)
                .setDisplayList(SHARE_MEDIA.SINA, SHARE_MEDIA.QQ, SHARE_MEDIA.WEIXIN)
                .setCallback(umShareListener)
                .open();
    }

7.不带面板分享

    /**
     * 不带面板分享
     *
     * @param type
     */
    private void share(SHARE_MEDIA type) {
        UMImage thumb = new UMImage(this, "https://ws1.sinaimg.cn/large/0065oQSqly1fw8wzdua6rj30sg0yc7gp.jpg");
        thumb.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,
        new ShareAction(MainActivity.this)
                .setPlatform(type)//传入平台
                .withText("hello")//分享内容
                .withMedia(thumb)//分享图片
                .setCallback(umShareListener)//回调监听器
                .share();
    }

8.分享开始回调

 private UMShareListener umShareListener = new UMShareListener() {
        /**
         * @descrption 分享开始的回调
         * @param platform 平台类型
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @descrption 分享成功的回调
         * @param platform 平台类型
         */
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Toast.makeText(MainActivity.this, "成功了!", Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享失败的回调
         * @param platform 平台类型
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(MainActivity.this, "失败!" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @descrption 分享取消的回调
         * @param platform 平台类型
         */
        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(MainActivity.this, "取消了!", Toast.LENGTH_LONG).show();
        }
    };

9.登录

    /**
     * 登录
     *
     * @param type
     */
    private void login(SHARE_MEDIA type) {
        UMShareAPI umShareAPI = UMShareAPI.get(this);
        umShareAPI.getPlatformInfo(MainActivity.this, type, umAuthListener);
    }

10.登录开始后回调

private UMAuthListener umAuthListener = new UMAuthListener() {
        /**
         * @desc 授权开始的回调
         * @param platform 平台名称
         */
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        /**
         * @desc 授权成功的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param data 用户资料返回
         */
        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map data) {
            for (Map.Entry entry : data.entrySet()) {
                String key = entry.getKey();
                String value = entry.getValue();
                Log.d(TAG, "key: " + key + ",value:" + value);
            }
            Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权失败的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         * @param t 错误原因
         */
        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {

            Toast.makeText(MainActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
        }

        /**
         * @desc 授权取消的回调
         * @param platform 平台名称
         * @param action 行为序号,开发者用不上
         */
        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {
            Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_LONG).show();
        }
    };

11.Android6.0权限适配

        if (Build.VERSION.SDK_INT>Build.VERSION_CODES.M){
            String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE,};
            ActivityCompat.requestPermissions(this,mPermissionList,123);
        }

12.onActivityResult

QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:
注意onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现
   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }

更多详细内容请参考官方demo,本文只简单的介绍了配置流程。

你可能感兴趣的:(集成友盟,第三方分享、登录)