zoukankan      html  css  js  c++  java
  • 友盟 第三方分享

    集成准备

    获取Appkey

    集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得Appkey。

    1、填写应用基本信息,获取AppKey

    首先添加新应用,输入应用名和选择平台信息,选择应用类别,点击提交冰获取应用appKey,得到Android 唯一Appkey

    2、下载SDK并去集成

    找到 https://developer.umeng.com/sdk/android界面,选择社会化分享 SDK,,点击设置,选择需要分享的平台,点击下载,下载解压后,将common文件夹下的文件夹拷贝到项目中,再将share文件夹下的main文件夹以及platforms(选择你想使用的平台即可)和shareboard文件夹下对应的资源文件和jar放入你的工程。

    3、添加回调Activity

    微信

    在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity

    支付宝

    与微信相似,支付宝需要在包名目录下创建apshare文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。

    QQ与新浪

    QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加

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

    注意onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现

    4、配置Android Manifest XML

    • 微信:
     <activity
                android:name=".wxapi.WXEntryActivity"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:exported="true"
                android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    • qq(请注意将我们的qq appkey替换成您自己的qq appkey):
         <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="tencentappkey" />
            </intent-filter>
            </activity>
            <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

    5、权限添加

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

    如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>   
       <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    请查看你的build.gradle文件,如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:

    其中123是requestcode,可以根据这个code判断,用户是否同意了授权。如果没有同意,可以根据回调进行相应处理:

    @Override
    public void onRequestPermissionsResult(int requestCode,
            String permissions[], int[] grantResults) {
    
    }

    添加读写文件的权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

      

    if(Build.VERSION.SDK_INT>=23){
                      String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,
    Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE,
    Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,
    Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,
    Manifest.permission.WRITE_APN_SETTINGS}; ActivityCompat.requestPermissions(
    this,mPermissionList,123); }

    6、初始化设置

    初始化需要在您的Application中调用我们的初始化接口:

            PlatformConfig.setWeixin("appId", "appkey");
            PlatformConfig.setQQZone("appId", "appkey");
    
            // 一些分享配置
            UMShareConfig config = new UMShareConfig();
            config.isOpenShareEditActivity(true);
            config.isNeedAuthOnGetUserInfo(true);
            config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO);
            UMShareAPI.get(getApplicationContext()).setShareConfig(config);

    U-Share基础功能

    分享

    友盟分享分为两种形式:

    • 使用分享面板的分享,用户可以调用我们的打开分享面板的方法,点击分享面板的对应平台进行分享。
    • 不使用分享面板的分享,用户可以自己写分享按钮,或者触发事件,然后调用我们的分享方法,进行分享。简而言之,直接分享就是在用户自己的界面组件中插入分享行为,分享面板是打开我们写好的一个界面组件,根据点击事件进行分享。

    分享(带面板)

    打开分享面板的代码如下:

    new ShareAction(MainActivity.this).withText("hello")                    
    .setDisplayList(SHARE_MEDIA.SINA,SHARE_MEDIA.QQ,SHARE_MEDIA.WEIXIN) .setCallback(umShareListener).open();

    不带面板

    new ShareAction(MainActivity.this)
    .setPlatform(SHARE_MEDIA.QQ)//传入平台
    .withText("hello")//分享内容
    .setCallback(umShareListener)//回调监听器
    .share();

    其中umShareListener为回调监听,构建如下:

     private UMShareListener shareListener = new UMShareListener() {
            /**
             * @descrption 分享开始的回调
             * @param platform 平台类型
             */
            @Override
            public void onStart(SHARE_MEDIA platform) {
    
            }
    
            /**
             * @descrption 分享成功的回调
             * @param platform 平台类型
             */
            @Override
            public void onResult(SHARE_MEDIA platform) {
                Toast.makeText(ShareDetailActivity.this,"成功了",Toast.LENGTH_LONG).show();
            }
    
            /**
             * @descrption 分享失败的回调
             * @param platform 平台类型
             * @param t 错误原因
             */
            @Override
            public void onError(SHARE_MEDIA platform, Throwable t) {
                Toast.makeText(ShareDetailActivity.this,"失败"+t.getMessage(),Toast.LENGTH_LONG).show();
            }
    
            /**
             * @descrption 分享取消的回调
             * @param platform 平台类型
             */
            @Override
            public void onCancel(SHARE_MEDIA platform) {
                Toast.makeText(ShareDetailActivity.this,"取消了",Toast.LENGTH_LONG).show();
    
            }
        };

    其余的可以参照友盟文档

    https://developer.umeng.com/docs/66632/detail/66639

  • 相关阅读:
    使用日历控件的一些体会(downmoon)
    带附加条件的NewID()用法
    微软的招聘哲学——做微软人的五大核心素质(摘自《微软360度》)
    彻底禁用fckEditor的上传功能(含防止Type漏洞问题)
    Remote Access Connection Manager 服务因下列错误而停止解决办法
    GridView如何更新批量数据和单条记录?
    .net1.1与.net2.0在加载ascx文件的控件时有所不同(Downmoon)
    牛羊吃草问题求解(downmoon)
    c#操作ecxel的一些资源(downmoon搜集)
    安装sql2008 enterprise (English正式版)图解
  • 原文地址:https://www.cnblogs.com/chhom/p/9036232.html
Copyright © 2011-2022 走看看