集成微信登录和分享真的很简单

文末有Demo.
准备工作

这里 注册微信开放平台的账号,
下载 签名生成工具 用来 获取 应用签名。
并不要下载sdk,

再去友盟
注册一个账号,
创建一个应用,获取友盟的Appkey.
下载分享的sdk. 地址
再去根据下面链接添加好下载的jar包和资源文件,
友盟文档
以及在manifest文件中添加以下内容

   <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.READ_LOGS" />  
   <uses-permission android:name="android.permission.CALL_PHONE" />  
   <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
   <uses-permission android:name="android.permission.GET_TASKS" />  
   <uses-permission android:name="android.permission.SET_DEBUG_APP" />  
   <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />  
   <uses-permission android:name="android.permission.GET_ACCOUNTS" />  
   <uses-permission android:name="android.permission.USE_CREDENTIALS" />  
   <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />  

    <activity  
         android:name=".wxapi.WXEntryActivity"  
         android:configChanges="keyboardHidden|orientation|screenSize"  
         android:exported="true"  
         android:screenOrientation="portrait"  
         android:theme="@android:style/Theme.Translucent.NoTitleBar" />  

     <meta-data  
         android:name="UMENG_APPKEY"  
         android:value="561cae6ae0f55abd990035bf" />//修改为自己应用的umengappkey  

     <activity  
         android:name="com.umeng.socialize.editorpage.ShareActivity"  
         android:excludeFromRecents="true"  
         android:theme="@style/Theme.UMDefault" />  

以及在主module包名下添加 package : wxapi,
在wxapi里面添加WXEntryActivity.Java,
如下:

package com.wtime_developer.wecaht.wxapi;  
import com.umeng.weixin.callback.WXCallbackActivity;  
public class WXEntryActivity extends WXCallbackActivity {  
}  

微信分享代码:

share(SHARE_MEDIA.WEIXIN);//微信  
share(SHARE_MEDIA.WEIXIN_CIRCLE);//朋友圈  

private void share(SHARE_MEDIA media) {  
       new ShareAction(acticity).setPlatform(media)  
               .withTitle("Title")  
               .withText("content")  
               .withMedia(new UMImage(context, R.mipmap.ic_launcher))//第二个参数也可以是网络图片地址  
               .withTargetUrl("url")//修改为你要分享的链接  
               .setCallback(umShareListener)  
               .share();  
   }  

private UMShareListener umShareListener = new UMShareListener() {  
       @Override  
       public void onResult(SHARE_MEDIA platform) {  
           Toast.makeText(context, " 分享成功啦", Toast.LENGTH_SHORT).show();  
           finish();  
       }  

       @Override  
       public void onError(SHARE_MEDIA platform, Throwable t) {  
           Toast.makeText(context, " 分享失败啦", Toast.LENGTH_SHORT).show();  
           finish();  
       }  
  
       @Override  
       public void onCancel(SHARE_MEDIA platform) {  
           Toast.makeText(context, " 分享取消了", Toast.LENGTH_SHORT).show();  
           finish();  
       }  
   };  

登录代码:

private void login() {  
    UMShareAPI mShareAPI = UMShareAPI.get(context);  
    if (mShareAPI.isInstall(acticity, SHARE_MEDIA.WEIXIN)) {//判断是否安装微信  
        mShareAPI.doOauthVerify(acticity, SHARE_MEDIA.WEIXIN, umAuthListener);//授权  
    }  
}  

private UMAuthListener umAuthListener = new UMAuthListener() {  
    @Override  
    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {  
        //授权成功  
        UMShareAPI mShareAPI = UMShareAPI.get(context);  
        mShareAPI.getPlatformInfo(acticity, SHARE_MEDIA.WEIXIN, umAuthListener1);//获取用户信息  
    }  

    @Override  
    public void onError(SHARE_MEDIA platform, int action, Throwable t) {  
        Toast.makeText(context, "授权失败", Toast.LENGTH_SHORT).show();  
    }  

    @Override  
    public void onCancel(SHARE_MEDIA platform, int action) {  
        Toast.makeText(context, "授权取消", Toast.LENGTH_SHORT).show();  
    }  
};  

private UMAuthListener umAuthListener1 = new UMAuthListener() {  
    @Override  
    public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {  
        //把友盟返回的信息 转化为微信的实体类  
        String json = "{\"openid\":\"" + map.get("openid") + "\","  
                + "\"nickname\":\"" + map.get("screen_name") + "\","  
                + "\"sex\":\"" + map.get("gender") + "\","  
                + "\"province\":\"" + map.get("province") + "\","  
                + "\"city\":\"" + map.get("city") + "\","  
                + "\"country\":\"" + map.get("country") + "\","  
                + "\"headimgur\":\"" + map.get("profile_image_url") + "\","  
                + "\"privilege\":[],"  
                + "\"unionid\":\"" + map.get("unionid") + "\"}";  
        //再调用你们后台写的微信登录相关的接口,  
    }  

    @Override  
    public void onError(SHARE_MEDIA platform, int action, Throwable t) {  
        Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show();  
    }  

    @Override  
    public void onCancel(SHARE_MEDIA platform, int action) {  
        Toast.makeText(context, "取消获取用户信息", Toast.LENGTH_SHORT).show();  
    }  
};  

注意事项:
1.确保微信开放平台上的 包名和应用签名准确(配置好签名再用这工具获取签名)。 应用签名生成工具


2.修改了 app/MyApplication里的appid 和 appsecret
3.修改umeng module里manifest里面的umengappkey
4.在app.build 弄好相应的签名信息
5.确保混淆文件添加

有问题 欢迎留言.

项目地址:https://github.com/103style/Wechat
CSDN下载地址:http://download.csdn.net/download/lxk_1993/9675348

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容