微信登陆与分享

微信分享

 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.wx_fxlogo);    //图标
                WxShareUtils.shareWeb(VipActivity.this, HttpHeader.APP_ID,"http://www.xxx.com","title","info",bitmap);

WxShareUtils.class


import android.content.Context;
import android.graphics.Bitmap;
import android.widget.Toast;

import com.linjia.ljappnew.wxapi.WXEntryActivity;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

public class WxShareUtils {
    /**
     * 分享网页类型至微信
     *
     * @param context 上下文
     * @param appId   微信的appId
     * @param webUrl  网页的url
     * @param title   网页标题
     * @param content 网页描述
     * @param bitmap  位图
     */
    public static void shareWeb(Context context, String appId, String webUrl, String title, String content, Bitmap bitmap) {
        // 通过appId得到IWXAPI这个对象
        IWXAPI wxapi = WXAPIFactory.createWXAPI(context, appId);
        // 检查手机或者模拟器是否安装了微信
        if (!wxapi.isWXAppInstalled()) {
            Toast.makeText(context, "您还没有安装微信", Toast.LENGTH_SHORT).show();
            return;
        }

        // 初始化一个WXWebpageObject对象
        WXWebpageObject webpageObject = new WXWebpageObject();
        // 填写网页的url
        webpageObject.webpageUrl = webUrl;

        // 用WXWebpageObject对象初始化一个WXMediaMessage对象
        WXMediaMessage msg = new WXMediaMessage(webpageObject);
        // 填写网页标题、描述、位图
        msg.title = title;
        msg.description = content;
        // 如果没有位图,可以传null,会显示默认的图片
        msg.setThumbImage(bitmap);

        // 构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        // transaction用于唯一标识一个请求(可自定义)
        req.transaction = "webpage";
        // 上文的WXMediaMessage对象
        req.message = msg;
        // SendMessageToWX.Req.WXSceneSession是分享到好友会话
        // SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
        req.scene = SendMessageToWX.Req.WXSceneSession;

        // 向微信发送请求
        wxapi.sendReq(req);
    }
}

微信登陆

   public static  IWXAPI api;
   api =  WXAPIFactory.createWXAPI(getApplicationContext(), HttpHeader.APP_ID,false);

                        if (!api.isWXAppInstalled()) {
                            Toast.makeText(LoginActivity.this, "您还未安装微信客户端", Toast.LENGTH_SHORT).show();
                            return;
                        }
                        api.registerApp(HttpHeader.APP_ID);

                        SendAuth.Req req = new SendAuth.Req();
                        isClick=true;
                        req.scope = "snsapi_userinfo";
                        req.state = "wechat_sdk_demo_test";
                        api.sendReq(req);
                        finish();

分享与登陆回执//WXEntryActivity.class


import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.linjia.ljappnew.R;
import com.linjia.ljappnew.layout.LoginActivity;
import com.linjia.ljappnew.layout.MainActivity;
import com.linjia.ljappnew.layout.home.HomeActivity;
import com.linjia.ljappnew.layout.order.OrderDetailActivity;
import com.linjia.ljappnew.layout.wxapi.UIUtils;
import com.linjia.ljappnew.layout.wxapi.WxData;
import com.linjia.ljappnew.layout.wxapi.WxRegisterActivity;
import com.linjia.ljappnew.pojo.UserInfo;
import com.linjia.ljappnew.register.RegisterActivity;
import com.linjia.ljappnew.util.HttpHeader;
import com.linjia.ljappnew.util.HttpUtil;
import com.linjia.ljappnew.util.MD5StringUtil;
import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.tsy.sdk.myokhttp.response.JsonResponseHandler;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

import io.netty.handler.codec.http.HttpResponse;
import okhttp3.Headers;

import static com.makeramen.roundedimageview.RoundedImageView.TAG;

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
    private static final int RETURN_MSG_TYPE_LOGIN = 1;
    private static final int RETURN_MSG_TYPE_SHARE = 2;
    private IWXAPI mWeixinAPI;

    private TextView id_tv;
    private TextView nickname_tv;
    private TextView sex_tv;
    private ImageView imageView;
    private Handler handler;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wxentry);
        handler = new Handler();

        mWeixinAPI = WXAPIFactory.createWXAPI(this, WxData.WEIXIN_APP_ID, true);
        mWeixinAPI.handleIntent(this.getIntent(), this);

        View view = getWindow().getDecorView();
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        //得到当前界面的装饰视图
        if(Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            //设置让应用主题内容占据状态栏和导航栏
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            //设置状态栏和导航栏颜色为透明
            getWindow().setStatusBarColor(Color.TRANSPARENT);
            getWindow().setNavigationBarColor(Color.TRANSPARENT);
        }
        //隐藏标题栏
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        mWeixinAPI.handleIntent(intent, this);//必须调用此句话
    }

    @Override
    public void onReq(BaseReq baseReq) {
        Log.d("-----", "onReq: " + baseReq);


        finish();
    }


    @Override
    public void onResp(BaseResp baseResp) {
   /*     Log.d("-----", "errStr: " + baseResp.errStr);
        Log.d("-----", "openId: " + baseResp.openId);
        Log.d("-----", "transaction: " + baseResp.transaction);
        Log.d("-----", "errCode: " + baseResp.errCode);
        Log.d("-----", "getType: " + baseResp.getType());
        Log.d("-----", "checkArgs: " + baseResp.checkArgs());*/
        int errorCode = baseResp.errCode;
        switch (errorCode) {
            case BaseResp.ErrCode.ERR_OK:
         /*       //用户同意
                if(baseResp instanceof SendAuth.Resp){
                    SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
                    //获取微信传回的code
                    String code = newResp.code;
                    getAccess_token(code);
                   *//* getUserInfo();*//*

                }*/
                if(baseResp.getType()== ConstantsAPI.COMMAND_SENDAUTH){

                    SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
                    //获取微信传回的code
                    String code = newResp.code;
                    getAccess_token(code);
                    /* getUserInfo();*/
                }else if(baseResp.getType()==ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){
                  /*  Toast.makeText(WXEntryActivity.this, "分享成功", Toast.LENGTH_SHORT).show();*/
                    finish();
                }
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                //用户拒绝
                finish();
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                //用户取消
                finish();
                break;
            case  ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
                Log.i("WXEntryActivity" , ">>>errCode = " + baseResp.errCode);
                finish();
                break;


            default:
                finish();
                break;
        }

       /* switch (baseResp.errCode) {

            case BaseResp.ErrCode.ERR_AUTH_DENIED:
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                if (RETURN_MSG_TYPE_SHARE == baseResp.getType()) UIUtils.runOnUIToast("分享失败");
                else UIUtils.runOnUIToast("登录失败");
                break;
            case BaseResp.ErrCode.ERR_OK:
                switch (baseResp.getType()) {
                    case RETURN_MSG_TYPE_LOGIN:
                        //拿到了微信返回的code,立马再去请求access_token
                        String code = ((SendAuth.Resp) baseResp).code;
                        getAccess_token(code);
                        //就在这个地方,用网络库什么的或者自己封的网络api,发请求去咯,注意是get请求

                        Log.d("--------", "code: " + code);
                        id_tv.setText("code:       " + code);
                        break;

                    case RETURN_MSG_TYPE_SHARE:
                        UIUtils.runOnUIToast("微信分享成功");
                        finish();
                        break;
                }
                break;
        }*/
    }


    /**
     * 获取openid accessToken值用于后期操作
     *
     * @param code 请求码
     */
    private void getAccess_token(final String code) {
        String path = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
                + WxData.WEIXIN_APP_ID
                + "&secret="
                + WxData.APP_SECRET
                + "&code="
                + code
                + "&grant_type=authorization_code";
        OkHttpUtils.get().url(path).build().execute(new StringCallback() {

            @Override
            public void onError(okhttp3.Call call, Exception e) {

            }

            @Override
            public void onResponse(String response) {


                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(response);
                    final String openid = jsonObject.getString("openid").toString().trim();
                    final String access_token = jsonObject.getString("access_token").toString().trim();

                    SharedPreferences userPreference = getSharedPreferences("user", Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = userPreference.edit();

                    editor.putString("token",openid);
                    //***  保存请求头
                    editor.commit();
                    HttpUtil.getInstance().getMyOkHttp()
                            .get()
                            .url(HttpUtil.HOST_ADDRESS+"/sms/loginByToken?token="+openid)
                            .tag(this)
                            .enqueue(new JsonResponseHandler() {
                                @Override
                                public void onSuccess(int statusCode, JSONObject response) {
                                    try {
                                        Boolean isTrue=(Boolean) response.get("success");


                                            if (isTrue) {

                                                JSONObject user = response.getJSONObject("data");
                                                if (user.get("userName").toString() != null &&!"".equals(user.get("userName").toString())) {
                                                 /**/
                                                }

                                            } else {
                                                getUserMesg(access_token, openid);
                                            }

                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                }

                                @Override
                                public void onFailure(int statusCode, String error_msg) {

                                }
                            });



                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        });

    }

    //更新微信个人信息

    private void getUserMessage(final String access_token, final String openid) {
        String path = "https://api.weixin.qq.com/sns/userinfo?access_token="
                + access_token
                + "&openid="
                + openid;


        OkHttpUtils.get().url(path).build().execute(new StringCallback() {


            @Override
            public void onError(okhttp3.Call call, Exception e) {

            }

            @Override
            public void onResponse(String response) {

                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(response);
                    String nickname = jsonObject.getString("nickname");
                    int sex = Integer.parseInt(jsonObject.get("sex").toString());
                    String headimgurl = jsonObject.getString("headimgurl");
                    String openid1 = jsonObject.getString("openid");

                    SharedPreferences userPreference = getSharedPreferences("user", Context.MODE_PRIVATE);


                    JSONObject param=new JSONObject();
                    try {
                        param.put("id",Integer.parseInt(userPreference.getString("userId",null)));
                        param.put("sex",1);
                        param.put("nickName",nickname);
                        param.put("userPic",headimgurl);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    HttpUtil.getInstance().getMyOkHttp()
                            .post()
                            .url(HttpUtil.HOST_ADDRESS+"/userinfo/updata")
                            .jsonParams(param.toString())
                            .tag(this)
                            .enqueue(new JsonResponseHandler() {
                                @Override
                                public void onSuccess(int statusCode, JSONObject response) {
                                    try {
                                        Boolean istrue=(Boolean) response.get("success");

                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }

                                }

                                public void onFailure(int statusCode, String error_msg) {
                                    Log.d(ContentValues.TAG, "doPostJSON onFailure:" + error_msg);
                                }
                            });
                    SharedPreferences.Editor editor = userPreference.edit();

                    editor.putString("nickName",nickname);
                    editor.putString("sex",sex+"");
                    editor.putString("userPic",headimgurl);
                    //***  保存请求头
                    editor.commit();
                } catch (JSONException e) {
                    e.printStackTrace();


                }
                // finish();
            }
        });

    }


    /**
     * 获取微信的个人信息
     *
     * @param access_token
     * @param openid
     */
    private void getUserMesg(final String access_token, final String openid) {
        String path = "https://api.weixin.qq.com/sns/userinfo?access_token="
                + access_token
                + "&openid="
                + openid;


        OkHttpUtils.get().url(path).build().execute(new StringCallback() {


            @Override
            public void onError(okhttp3.Call call, Exception e) {

            }

            @Override
            public void onResponse(String response) {

                JSONObject jsonObject = null;
                try {
                    jsonObject = new JSONObject(response);
                    String nickname = jsonObject.getString("nickname");
                    int sex = Integer.parseInt(jsonObject.get("sex").toString());
                    String headimgurl = jsonObject.getString("headimgurl");
                    String openid1 = jsonObject.getString("openid");

                    SharedPreferences userPreference = getSharedPreferences("user", Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = userPreference.edit();

                    editor.putString("nickName",nickname);
                    editor.putString("sex",sex+"");
                    editor.putString("userPic",headimgurl);
                    //***  保存请求头
                    editor.commit();
                    Toast.makeText(WXEntryActivity.this, "登录成功,请按步骤进行", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(WXEntryActivity.this, WxRegisterActivity.class);
                    startActivity(intent);
                    finish();
                 /*   imageUrl(headimgurl);*/
                    //    startLoca(nickname, openid1);
                } catch (JSONException e) {
                    e.printStackTrace();
                    Toast.makeText(WXEntryActivity.this, "登录失败,请稍候重试", Toast.LENGTH_SHORT).show();

                }
                // finish();
            }
        });

    }


    //请求显示图像

    private void imageUrl(final String url) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url1 = new URL(url);
                    HttpURLConnection urlConnection = (HttpURLConnection) url1.openConnection();
                    urlConnection.setRequestMethod("GET");
                    urlConnection.setReadTimeout(2000);
                    int responseCode = urlConnection.getResponseCode();

                    if (responseCode == 200) {
                        InputStream inputStream = urlConnection.getInputStream();

                        final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                imageView.setImageBitmap(bitmap);
                            }
                        });
                    }


                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    private String getAccessToken(String code) {
        String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ HttpHeader.APP_ID +"&secret="+HttpHeader.APP_SECRET+"&code="+code+"&grant_type=authorization_code";
        HttpUtil.getInstance().getMyOkHttp()
                .get()
                .url(HttpUtil.HOST_ADDRESS+url)
                .tag(this)
                .enqueue(new JsonResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, String error_msg) {

                    }

                    @Override
                    public void onSuccess(int statusCode, JSONObject response) {
                        Log.d("getAccess_token", "onSuccess: "+response.toString());
                        try {
                           String   accessToken = response.getString("access_token");
                            String openID = response.getString("openid");
                            String refreshToken = response.getString("refresh_token");
                            long expires_in = response.getLong("expires_in");
                            SharedPreferences userPreference = getSharedPreferences("user", Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = userPreference.edit();
                            editor.putString("accessToken",accessToken);
                            editor.putString("openID",openID);
                            editor.putString("refreshToken",refreshToken);
                            editor.putString("expires_in",expires_in+"");
                            editor.commit();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                });
        return "";

        }
    private void getUserInfo() {
        SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);
         String accessToken=sharedPreferences.getString("accessToken","");
         String openID=sharedPreferences.getString("accessToken","");
         String refreshToken=sharedPreferences.getString("accessToken","");
         long expires_in=Long.parseLong(sharedPreferences.getString("accessToken",""));
        if (isAccessTokenIsInvalid() && System.currentTimeMillis() < expires_in) {
            String uri = "https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openID;
            HttpUtil.getInstance().getMyOkHttp()
                    .get()
                    .url(HttpUtil.HOST_ADDRESS+uri)
                    .tag(this)
                    .enqueue(new JsonResponseHandler() {
                        @Override
                        public void onFailure(int statusCode, String error_msg) {

                        }

                        @Override
                        public void onSuccess(int statusCode, JSONObject response) {
                            Log.d("getUserInfo", "onSuccess: "+response.toString());
                            try {
                                String nikeName = response.getString("nickname");
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }


                        }
                    });
        }
    }
    private boolean isAccessTokenIsInvalid() {
        SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);
        String accessToken=sharedPreferences.getString("accessToken","");
        String openID=sharedPreferences.getString("accessToken","");
        String refreshToken=sharedPreferences.getString("accessToken","");
        long expires_in=Long.parseLong(sharedPreferences.getString("accessToken",""));
        String url = "https://api.weixin.qq.com/sns/auth?access_token=" + accessToken + "&openid=" + openID;
        HttpUtil.getInstance().getMyOkHttp()
                .get()
                .url(HttpUtil.HOST_ADDRESS+url)
                .tag(this)
                .enqueue(new JsonResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, String error_msg) {

                    }

                    @Override
                    public void onSuccess(int statusCode, JSONObject response) {
                        Log.d("isAccessTokenIsInvalid", "onSuccess: "+response.toString());
                        try {
                            int errorCode = response.getInt("errcode");
                            if (errorCode == 0) {
                                x=0;
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                });
        if(x==0)
        {
            return true;
        }
        return false;
    }
    public static int x=1;
    private void refreshAccessToken() {
        SharedPreferences sharedPreferences=getSharedPreferences("user",MODE_PRIVATE);
        String accessToken=sharedPreferences.getString("accessToken","");
        String openID=sharedPreferences.getString("accessToken","");
        String refreshToken=sharedPreferences.getString("accessToken","");
        long expires_in=Long.parseLong(sharedPreferences.getString("accessToken",""));
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove("accessToken");
        editor.remove("openID");
        editor.remove("refreshToken");
        editor.remove("expires_in");
        editor.commit();
        String uri = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" + HttpHeader.APP_ID + "&grant_type=refresh_token&refresh_token=" + refreshToken;
        HttpUtil.getInstance().getMyOkHttp()
                .get()
                .url(HttpUtil.HOST_ADDRESS+uri)
                .tag(this)
                .enqueue(new JsonResponseHandler() {
                    @Override
                    public void onFailure(int statusCode, String error_msg) {

                    }

                    @Override
                    public void onSuccess(int statusCode, JSONObject response) {
                        Log.d(TAG, "onSuccess: "+response.toString());
                        try {
                            String   accessToken = response.getString("access_token");
                            String openID = response.getString("openid");
                            String refreshToken = response.getString("refresh_token");
                            long expires_in = response.getLong("expires_in");
                            SharedPreferences userPreference = getSharedPreferences("user", Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = userPreference.edit();
                            editor.putString("accessToken",accessToken);
                            editor.putString("openID",openID);
                            editor.putString("refreshToken",refreshToken);
                            editor.putString("expires_in",expires_in+"");
                            editor.commit();
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                });
    }
}


httpUtil.class



import com.tsy.sdk.myokhttp.MyOkHttp;

public class HttpUtil {
    private static MyOkHttp myOkHttp =  new MyOkHttp();
    private static HttpUtil httpUtil = new HttpUtil();

    private HttpUtil(){}
    public static HttpUtil getInstance(){
        return httpUtil;
    }

 public static String HOST_ADDRESS = "http://www.linjiajiazheng.com/api";
    public static String HOST_ADDRESS_BYWX = "";
  //public static String HOST_ADDRESS = "http://192.168.0.113:8080";
   // public static String HOST_ADDRESS = "http://47.104.79.84/api";
    public MyOkHttp getMyOkHttp() {
        return myOkHttp;
    }

}

build.gradle

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'org.jetbrains:annotations-java5:15.0'
    implementation 'com.jaeger.statusbarutil:library:1.5.1'
    implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.squareup.okio:okio:1.5.0'
    implementation 'com.google.code.gson:gson:2.8.0'
    implementation 'com.tsy:myokhttp:1.1.4'
    implementation 'com.squareup.picasso:picasso:2.5.2'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.ansen.http:okhttpencapsulation:1.0.1'
    implementation 'com.makeramen:roundedimageview:2.2.1'
    implementation 'com.android.support:design:28.0.0'
    implementation 'io.netty:netty-all:4.1.31.Final'
    implementation 'com.smarttop:jd-address:1.1.0'
    implementation 'com.kyleduo.switchbutton:library:2.0.0'
    implementation(name: 'alipaySdk-15.6.0-20190226104053', ext: 'aar')
    implementation 'com.zhy.base:fileprovider:1.0.0'
    implementation 'com.tsy:myokhttp:1.1.4'
    implementation 'cn.jiguang.sdk:jpush:3.2.0'
    // 此处以JPush 3.2.0 版本为例。
    implementation 'cn.jiguang.sdk:jcore:1.2.7'
    // 此处以JCore 1.2.7 版本为例。
    implementation 'com.necer.ncalendar:ncalendar:3.4.5'
    implementation 'com.sunfusheng:marqueeview:1.3.3'
    implementation 'com.lzy.widget:imagepicker:0.6.1'
    //指定版本  ImagePicker
    implementation 'com.xcheng:easypermission:1.0.1'
    implementation 'q.rorbin:VerticalTabLayout:1.2.5'
    implementation 'com.github.newcaoguo:EasyRollingNumber:1.0'
    implementation 'org.greenrobot:eventbus:3.0.0'
    implementation 'org.jsoup:jsoup:1.10.3'
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
    implementation 'com.zhy:okhttputils:2.4.1'
    implementation 'junit:junit:4.12'
    implementation 'anylife.downloadinstaller:downloadInstaller:1.0.4'
    implementation 'com.github.d746997:ShopcartCode:1.1'
    implementation 'com.ansen.http:okhttpencapsulation:1.0.1'
    implementation('com.github.gzu-liyujiang.AndroidPicker:WheelPicker:1.5.4') {
        exclude group: 'com.android.support'
    }
    //环信客服SDK
    implementation 'com.hyphenate:kefu-easeui-android:latest.release'
    //或者 compile 'com.hyphenate:kefu-easeui-android:1.1.9r2'
    //EaseUI中 头像获取用到了glide,请添加glide库
    implementation 'com.github.bumptech.glide:glide:4.7.1' //其他版本也可以
    implementation 'com.easemob:kefu-sdk:1.1.9r2'
}

   manifestPlaceholders = [
                JPUSH_PKGNAME: applicationId,
                JPUSH_APPKEY : "f76bab6b14c3ea54d3dee16e", //JPush 上注册的包名对应的 Appkey.
                JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.   这里记录的是jpush  和微信无关
        ]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值