友盟QQ,微信登录

配置

一、根目录的build.gradle的buildscript,allprojects的repositories都得加上

maven { url 'https://dl.bintray.com/umsdk/release' }

完整示例:

buildscript {

repositories {
    maven { url 'https://dl.bintray.com/umsdk/release' }
    maven{ url 'http://maven.aliyun.com/repository/public/'}
    maven{ url 'http://maven.aliyun.com/repository/google/'}
    maven{ url 'http://maven.aliyun.com/repository/gradle-plugin/'}
    maven{ url 'http://maven.aliyun.com/repository/central/'}
    //jcenter仓库
    jcenter{
        url 'http://jcenter.bintray.com'
    }

    google()

}
dependencies {
    classpath 'com.android.tools.build:gradle:3.6.4'
    

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    maven { url 'https://dl.bintray.com/umsdk/release' }
    maven{ url 'http://maven.aliyun.com/repository/public/'}
    maven{ url 'http://maven.aliyun.com/repository/google/'}
    maven{ url 'http://maven.aliyun.com/repository/gradle-plugin/'}
    maven{ url 'http://maven.aliyun.com/repository/central/'}

    jcenter{
        url 'http://jcenter.bintray.com'
    }
    maven { url "https://jitpack.io" }
    google()
    jcenter()

}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

二、app下的build.gradle相应配置

apply plugin: 'com.android.application'

android {
compileSdkVersion 29
buildToolsVersion "29.0.3"

defaultConfig {
    applicationId "com.xf.activity"
    minSdkVersion 21
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    //要添加下面这句代码,否则会报如下错误
    //Manifest merger failed : Attribute data@scheme at AndroidManifest.xml requires a placeholder substitution but no value for <qqappid> is provided
    manifestPlaceholders = [
            qqappid       : "1106087xxx",//友盟QQ分享,登录,腾讯开发平台qq的appid
    ]
}

signingConfigs {
    signingConfig {
        keyAlias 'chuangqi'
        keyPassword 'xxx'
        storeFile file('chuangqi.jks')
        storePassword 'xxx'
    }
}

buildTypes {

    release {
        minifyEnabled true//是否混淆
        zipAlignEnabled true//Zipalign优化
        shrinkResources true//去掉不用资源
        signingConfig signingConfigs.signingConfig

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false//是否混淆,测试服也需要开启混淆避免在测试没发现混淆问题,在线上出现。关闭可以编译快点
        zipAlignEnabled false//Zipalign优化
        shrinkResources false//去掉不用资源

        signingConfig signingConfigs.signingConfig
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

//这个正常大点的项目都会引入,因为方法数会超过65536个
api 'com.android.support:multidex:1.0.3'

api  'com.umeng.umsdk:common:2.2.5'
api  'com.umeng.umsdk:share-core:7.0.2'
api  'com.umeng.umsdk:share-board:7.0.2'
api  'com.umeng.umsdk:share-qq:7.0.2'
api  'com.umeng.umsdk:share-wx:7.0.2'
}

注意点:

1、debug和release都用上signingConfig,这样debug直接跑到手机也是正常调起授权界面的
2、manifestPlaceholders必须配置且写上qqappid,单词不能错。
3、applicationId和xxx.jks都是你用在开发平台申请的包名和签名文件

三、Application类配置

public class MyApplication extends MultiDexApplication {

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

    initUMeng();
}

private void initUMeng(){
    UMConfigure.setLogEnabled(true);
    //UMConfigure.init(this, "5cb81fd40cafb26b4bxxxxx", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "55d672d2757447217577bcbd6dxxxxx");
    //可以不用友盟上的AppSecret
    UMConfigure.init(this, "5cb81fd40cafb26b4xxxxx", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
    //微信开发平台申请appkey appsecret
    PlatformConfig.setWeixin("wx3e38bb53bxxxxx", "626626abb26b594fb1eb58fcadxxxxx");
    //QQ开发平台申请的appId
    PlatformConfig.setQQZone("11060xxxx", "Ga8WDL0MOfxxxx");
}
}

注:代码中的xxxx为了保密,记得换成你项目去对应开发平台申请得来的appid,appsecret

使用

Activity开始使用

public class MainActivity extends AppCompatActivity {

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

    //qq登录
    findViewById(R.id.tv_qq_login).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            authorization(SHARE_MEDIA.QQ);
        }
    });

    //微信登录
    findViewById(R.id.tv_wx_login).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            authorization(SHARE_MEDIA.WEIXIN);
        }
    });
}

/**
* @desc : 获取授权信息
* @author : congge on 2020-09-28 19:59
**/
private void authorization(SHARE_MEDIA share_media){
    UMShareAPI.get(this).getPlatformInfo(this, share_media, new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA share_media) {

        }

        @Override
        public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
            //这里获取授权得来的信息
            Log.i("onComplete",map.get("uid")+"\t"+map.get("name")+"\t"+map.get("gender")+"\t"+map.get("iconurl"));
        }

        @Override
        public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

        }

        @Override
        public void onCancel(SHARE_MEDIA share_media, int i) {

        }
    });
}
}

到此就完成了友盟QQ,微信登录了。
还有个混淆文件,你看下友盟社会化分享下的混淆文件,复制过来即可

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容