lmw
2023-04-03 16ea883d3c03fd8b910f9282aa1bc08378d40d54
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
package com.zhaoyang.driver.wxapi;
 
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.zhaoyang.driver.base.BaseEvent;
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.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.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.umeng.socialize.weixin.view.WXCallbackActivity;
 
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
 
import java.net.URLEncoder;
 
//
//import com.example.beiDouThird.dto.ResWechatToken;
//import com.example.beiDouThird.dto.WechatJson;
//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.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.IWXAPIEventHandler;
//import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 
 
/**
 * 微信相关操作,比如登陆
 *
 * @author 唐浩
 */
public class WXEntryActivity extends WXCallbackActivity implements IWXAPIEventHandler {
    private static final String TAG = WXEntryActivity.class.getSimpleName();
    private static IWXAPI api;
    private BaseResp mResp = null;
    public static String WX_APP_ID = "wx97c33c052b2222f7";
//    private String WX_APP_SECRET = "24652a2c90268579c8ccd927edc5a5e4";
    private int type;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EventBus.getDefault().register(this);
        initApi();
 
    }
 
    private void initApi() {
        api = WXAPIFactory.createWXAPI(this, WX_APP_ID, false);
        api.handleIntent(getIntent(), this);
        api.registerApp(WX_APP_ID);
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        api.handleIntent(getIntent(), this);
    }
 
    // 微信发送请求到第三方应用时,会回调到该方法
    @Override
    public void onReq(BaseReq req) {
        finish();
    }
 
    // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
    @Override
    public void onResp(BaseResp resp) {
        Log.i(TAG, "onResp: 微信获得授权");
        Log.i(TAG, "onResp: "+resp.toString());
        String result = "";
        if (resp != null) {
            mResp = resp;
        }
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                switch (resp.getType()) {
                    case ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX:
                        //微信分享
                        // 只是做了简单的finish操作
                        break;
                        case ConstantsAPI.COMMAND_ADD_CARD_TO_EX_CARD_PACKAGE:
                    default:
//                        String code = ((SendAuth.Resp) resp).code;
//                        MapUtil.CustomerHashMap map = MapUtil.getInstance()
//                                .append("appid", WX_APP_ID)
//                                .append("secret", WX_APP_SECRET)
//                                .append("code", code)
//                                .append("grant_type", "authorization_code");
//                        HttpMethods.getInstance()
//                                .mApi
//                                .post("https://api.weixin.qq.com/sns/oauth2/access_token", map)
//                                .map(new Function<String, ResWechatToken>() {
//                                    @Override
//                                    public ResWechatToken apply(String s) throws Exception {
//                                        if (TextUtils.isEmpty(s)) {
//                                            return null;
//                                        }
//                                        return HttpMethods.mGson.fromJson(s, ResWechatToken.class);
//                                    }
//                                })
//                                .subscribeOn(Schedulers.io())
//                                .observeOn(AndroidSchedulers.mainThread())
//                                .subscribe(new Consumer<ResWechatToken>() {
//                                    @Override
//                                    public void accept(ResWechatToken resWechatToken) throws Exception {
//                                        Log.i(TAG, "accept: resWechatToken = " + resWechatToken);
//                                        getUserInfo(resWechatToken);
//                                    }
//                                }, new Consumer<Throwable>() {
//                                    @Override
//                                    public void accept(Throwable throwable) throws Exception {
//                                        Log.e(TAG, "accept: " + throwable.getMessage());
//                                    }
//                                })
//                        ;
                        break;
                }
 
                finish();
 
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                result = "发送取消";
                Toast.makeText(this, result, Toast.LENGTH_LONG).show();
                finish();
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                result = "发送被拒绝";
                Toast.makeText(this, result, Toast.LENGTH_LONG).show();
                finish();
                break;
            default:
                result = "发送返回";
                Toast.makeText(this, result, Toast.LENGTH_LONG).show();
                finish();
                break;
        }
    }
 
 
 
//    /**
//     * 通过拼接的用户信息url获取用户信息
//     */
//    private void getUserInfo(ResWechatToken data) {
//
//        val map: HashMap<String, Any> = HashMap()
//        map["type"] = "1"
//        HttpManager.getInstance().post(Api.getParamInfo, map, object : MyObserver(this) {
//            override fun success(responseString: String?) {
//                var banner: BannerBean = Gson().fromJson(responseString, BannerBean::class.java)
//            }
//
//        })
//        HashMap<String,Object> maps = new HashMap<>();
//        maps.put("access_token",data.getAccess_token());
//        maps.put("openid",data.getOpenid());
//
//        HttpMethods.getInstance()
//                .mApi
//                .post("https://api.weixin.qq.com/sns/userinfo", map)
//                .map(new Function<String, WechatJson>() {
//                    @Override
//                    public WechatJson apply(String s) throws Exception {
//                        Log.e(TAG, "apply: " + s);
//                        if (TextUtils.isEmpty(s)) return null;
//                        return HttpMethods.mGson.fromJson(s, WechatJson.class);
//                    }
//                })
//                .subscribeOn(Schedulers.io())
//                .observeOn(AndroidSchedulers.mainThread())
//                .subscribe(new Consumer<WechatJson>() {
//                    @Override
//                    public void accept(WechatJson stringHttpResult) throws Exception {
//                        EventBus.getDefault().post(new EventWechatLogin(stringHttpResult));
//                    }
//                }, new Consumer<Throwable>() {
//                    @Override
//                    public void accept(Throwable throwable) throws Exception {
//                    }
//                })
//        ;
//    }
 
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
        finish();
    }
 
    private String urlEnodeUTF8(String str) {
        String result = str;
        try {
            result = URLEncoder.encode(str, "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
 
    /**
     * 登录微信
     */
    public static void loginWithWechat(Context context) {
        IWXAPI wxapi = WXAPIFactory.createWXAPI(context, WXEntryActivity.WX_APP_ID, true);
        wxapi.registerApp(WXEntryActivity.WX_APP_ID);
        SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "youliao";
        wxapi.sendReq(req);
    }
 
    /***
     * 微信分享
     * @param context 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 webpageObject = new WXWebpageObject();
        webpageObject.webpageUrl = webUrl;
        WXMediaMessage msg = new WXMediaMessage(webpageObject);
        msg.title = title;
        msg.description = content;
        // 如果没有位图,可以传null,会显示默认的图片
        msg.setThumbImage(bitmap);
        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 void WXPay(OrderPayBean orderInfo) {
//        PayReq request = new PayReq();
//        request.appId = orderInfo.getAppid();
//        request.partnerId = orderInfo.getPartnerId();
//        request.prepayId = orderInfo.getPrepayId();
//        request.packageValue = orderInfo.getPackageX();
//        request.nonceStr = orderInfo.getNonceStr();
//        request.timeStamp = orderInfo.getTimeStamp();
//        request.sign = orderInfo.getSign();
//        Boolean Pay = api.sendReq(request);
//        Toast.makeText(this, "发起支付", Toast.LENGTH_SHORT).show();
//    }
 
    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
 
 
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMainEvent(BaseEvent eventEntity) {
        if (eventEntity.getCode() == BaseEvent.WEIXIN_BACK){
//            onBackPressed();
        }
    }
 
}