Skip to content

Commit 6c309a4

Browse files
committed
解决登录问题(未完成)
1 parent 408635b commit 6c309a4

File tree

13 files changed

+200
-252
lines changed

13 files changed

+200
-252
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
android:name=".activity.LauncherActivity"
2828
android:screenOrientation="portrait"
2929
android:theme="@style/AppTheme.NoActionBar.FullScreen">
30-
<intent-filter>
30+
<!-- <intent-filter>
3131
<action android:name="android.intent.action.MAIN"/>
3232
3333
<category android:name="android.intent.category.LAUNCHER"/>
34-
</intent-filter>
34+
</intent-filter>-->
3535
</activity>
3636

3737
<!--主界面-->
@@ -62,10 +62,10 @@
6262
android:launchMode="singleTop"
6363
android:screenOrientation="portrait"
6464
android:windowSoftInputMode="stateVisible">
65-
<!-- <intent-filter>
65+
<intent-filter>
6666
<action android:name="android.intent.action.MAIN"/>
6767
<category android:name="android.intent.category.LAUNCHER"/>
68-
</intent-filter>-->
68+
</intent-filter>
6969
</activity>
7070

7171

app/src/main/java/com/rae/cnblogs/activity/LauncherActivity.java

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,6 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4444
protected void onResume() {
4545
super.onResume();
4646
mLauncherPresenter.start();
47-
// // 判断主界面退出时间是否过短
48-
// long mainExitTimeMillis = config().getMainExitTimeMillis();
49-
// long span = System.currentTimeMillis() - mainExitTimeMillis;
50-
//
51-
// // 第一次或者是程序退出的时间超过1分钟(60000),就启动当前界面
52-
// if (mainExitTimeMillis <= 0 || span > 60000) {
53-
// mLauncherPresenter.start();
54-
// } else {
55-
// // 跳过启动界面
56-
// AppRoute.jumpToMain(this);
57-
// Observable.timer(500, TimeUnit.MILLISECONDS)
58-
// .subscribe(new Consumer<Long>() {
59-
// @Override
60-
// public void accept(Long aLong) throws Exception {
61-
// finish();
62-
// }
63-
// });
64-
// }
65-
6647
}
6748

6849
@Override
@@ -124,7 +105,7 @@ public void onAdClick() {
124105

125106
@Override
126107
public void onJumpToMain() {
127-
// AppRoute.jumpToMain(this);
128-
// finish();
108+
AppRoute.jumpToMain(this);
109+
finish();
129110
}
130111
}

app/src/main/java/com/rae/cnblogs/activity/LoginActivity.java

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.rae.cnblogs.dialog.IAppDialog;
2626
import com.rae.cnblogs.dialog.IAppDialogClickListener;
2727
import com.rae.cnblogs.dialog.impl.HintCardDialog;
28-
import com.rae.cnblogs.fragment.WebLoginFragment;
2928
import com.rae.cnblogs.presenter.CnblogsPresenterFactory;
3029
import com.rae.cnblogs.presenter.ILoginPresenter;
3130
import com.rae.cnblogs.sdk.bean.UserInfoBean;
@@ -37,7 +36,7 @@
3736
* 登录
3837
* Created by ChenRui on 2017/1/19 0019 9:59.
3938
*/
40-
public class LoginActivity extends BaseActivity implements ILoginPresenter.ILoginView, WebLoginFragment.WebLoginListener {
39+
public class LoginActivity extends BaseActivity implements ILoginPresenter.ILoginView {
4140

4241
@BindView(com.rae.cnblogs.R.id.ll_login_container)
4342
View mLoginLayout;
@@ -74,7 +73,6 @@ public class LoginActivity extends BaseActivity implements ILoginPresenter.ILogi
7473
protected HintCardDialog mLoginContractDialog;
7574

7675
private int mErrorTime; // 登录错误次数,达到3次以上提示用户是否跳转网页登录
77-
private WebLoginFragment mWebLoginFragment;
7876

7977
@Override
8078
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -144,13 +142,6 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
144142
mLoginContractDialog.setMessage(getString(R.string.login_contract_content));
145143
mLoginContractDialog.setEnSureText(getString(R.string.agree));
146144

147-
// 加载网页登录
148-
mWebLoginFragment = WebLoginFragment.newInstance("https://passport.cnblogs.com/user/signin");
149-
getSupportFragmentManager()
150-
.beginTransaction()
151-
.add(R.id.fl_web_login, mWebLoginFragment)
152-
.commit();
153-
154145
mUserNameView.setText("abc");
155146
mPasswordView.setText("123456");
156147
}
@@ -223,8 +214,7 @@ public void onDismiss(DialogInterface dialog) {
223214

224215
private void preformLogin() {
225216
showLoading();
226-
// mLoginPresenter.login();
227-
mWebLoginFragment.performLogin(getUserName(), getPassword(), null);
217+
mLoginPresenter.login();
228218
removeAccountTextListener(mAccountTextWatcher);
229219
mLoginButton.setEnabled(false);
230220
}
@@ -253,22 +243,6 @@ public void onLoginSuccess(UserInfoBean userInfo) {
253243
finish();
254244
}
255245

256-
@Override
257-
public void onWebLoadingFinish() {
258-
AppUI.toastInCenter(getContext(), "onWebLoadingFinish");
259-
}
260-
261-
@Override
262-
public void onLoginVerifyCodeError(String url) {
263-
AppUI.toastInCenter(getContext(), "onLoginVerifyCodeError:" + url);
264-
265-
}
266-
267-
@Override
268-
public void onNeedVerifyCode(String url) {
269-
AppUI.toastInCenter(getContext(), "onNeedVerifyCode:" + url);
270-
}
271-
272246
@Override
273247
public void onLoginError(String message) {
274248
onLoginCallback();
@@ -282,11 +256,6 @@ public void onLoginError(String message) {
282256
mErrorTime++;
283257
}
284258

285-
@Override
286-
public void onLoggingIn(String msg) {
287-
288-
}
289-
290259
@Override
291260
public void onLoginVerifyCodeError() {
292261
onLoginCallback();

app/src/main/java/com/rae/cnblogs/fragment/WebLoginFragment.java

Lines changed: 9 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.app.Activity;
44
import android.graphics.Bitmap;
55
import android.os.Bundle;
6-
import android.support.annotation.NonNull;
76
import android.support.annotation.Nullable;
87
import android.text.TextUtils;
98
import android.view.View;
@@ -26,67 +25,15 @@
2625
import com.rae.cnblogs.widget.webclient.RaeWebViewClient;
2726
import com.tencent.bugly.crashreport.CrashReport;
2827

29-
import io.reactivex.Observable;
3028
import io.reactivex.ObservableSource;
31-
import io.reactivex.android.schedulers.AndroidSchedulers;
32-
import io.reactivex.functions.Consumer;
3329
import io.reactivex.functions.Function;
34-
import io.reactivex.schedulers.Schedulers;
3530

3631
/**
3732
* 网页登录
3833
* Created by ChenRui on 2017/2/3 0003 12:01.
3934
*/
4035
public class WebLoginFragment extends WebViewFragment {
4136

42-
43-
/**
44-
* 网页登录回调
45-
*/
46-
public interface WebLoginListener {
47-
48-
/**
49-
* 当网页加载完毕触发
50-
*/
51-
void onWebLoadingFinish();
52-
53-
/**
54-
* 当验证码发生错误的时候触发
55-
*
56-
* @param url 新的验证码图片地址
57-
*/
58-
void onLoginVerifyCodeError(String url);
59-
60-
/**
61-
* 当网页需要验证码的时候触发
62-
*
63-
* @param url 验证码图片地址
64-
*/
65-
void onNeedVerifyCode(String url);
66-
67-
/**
68-
* 登录错误时候触发
69-
*
70-
* @param msg 错误消息
71-
*/
72-
void onLoginError(String msg);
73-
74-
/**
75-
* 登录中
76-
*
77-
* @param msg 消息
78-
*/
79-
void onLoggingIn(String msg);
80-
81-
/**
82-
* 登录成功
83-
*
84-
* @param data 用户信息
85-
*/
86-
void onLoginSuccess(UserInfoBean data);
87-
}
88-
89-
9037
private String mBlogApp;
9138

9239
public static WebLoginFragment newInstance(String url) {
@@ -100,10 +47,6 @@ public static WebLoginFragment newInstance(String url) {
10047
private IUserApi mUserApi;
10148

10249
private PlaceholderView mPlaceholderView;
103-
private WebLoginListener mWebLoginListener; // 登录回调
104-
105-
// 网页是否加载完毕
106-
private boolean mIsLoadFinish;
10750

10851
@Override
10952
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -118,9 +61,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
11861
@Override
11962
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
12063
super.onActivityCreated(savedInstanceState);
121-
if (getActivity() instanceof WebLoginListener) {
122-
mWebLoginListener = (WebLoginListener) getActivity();
123-
}
12464
}
12565

12666
@Override
@@ -139,71 +79,22 @@ public void onClick(View view) {
13979
parent.addView(mPlaceholderView);
14080
}
14181

142-
14382
@Override
14483
public void onDestroy() {
14584
RxObservable.dispose("user");
14685
super.onDestroy();
14786
}
14887

88+
private void perfromLogin() {
89+
// 同步COOKIE
90+
UserProvider.getInstance().syncFormWebview();
14991

150-
/**
151-
* 执行登录
152-
*
153-
* @param username 用户名
154-
* @param password 密码
155-
* @param verifyCode 验证码
156-
*/
157-
public void performLogin(@NonNull final String username, @NonNull final String password, @Nullable final String verifyCode) {
158-
159-
160-
Observable.just(1)
161-
.subscribeOn(Schedulers.newThread())
162-
.map(new Function<Integer, Integer>() {
163-
@Override
164-
public Integer apply(Integer integer) throws Exception {
165-
long startTimeMillis = System.currentTimeMillis();
166-
while (!mIsLoadFinish) {
167-
// 网页加载超时
168-
if ((System.currentTimeMillis() - startTimeMillis) > 15 * 1000)
169-
return -1;
170-
}
171-
172-
return 1;
173-
}
174-
})
175-
.observeOn(AndroidSchedulers.mainThread())
176-
.subscribe(new Consumer<Integer>() {
177-
@Override
178-
public void accept(Integer integer) throws Exception {
179-
if (mWebLoginListener == null) return;
180-
if (integer == -1) {
181-
mWebLoginListener.onLoginError("网页登录加载超时,请检查网络连接");
182-
return;
183-
}
184-
185-
186-
String js = "javascript:rae.login('@u','@p','@c')"
187-
.replace("@u", username)
188-
.replace("@p", password)
189-
.replace("@c", verifyCode == null ? "" : verifyCode);
190-
191-
mWebView.loadUrl(js);
192-
}
193-
});
92+
// 获取用户信息
93+
loadUserInfo();
19494
}
19595

196-
/**
197-
* 加载用户信息
198-
*/
19996
private void loadUserInfo() {
200-
201-
String msg = getString(R.string.loading_user_info);
202-
mPlaceholderView.loading(msg);
203-
204-
if (mWebLoginListener != null)
205-
mWebLoginListener.onLoggingIn(msg);
206-
97+
mPlaceholderView.loading(getString(R.string.loading_user_info));
20798
RxObservable.create(mUserApi.getUserBlogAppInfo(), "user")
20899
.flatMap(new Function<UserInfoBean, ObservableSource<UserInfoBean>>() {
209100
@Override
@@ -229,20 +120,14 @@ private String getLog(Throwable e) {
229120

230121
@Override
231122
protected void onError(String message) {
232-
notifyLoginError(message);
233-
}
234-
235-
private void notifyLoginError(String message) {
236123
mPlaceholderView.retry(message);
237-
if (mWebLoginListener != null)
238-
mWebLoginListener.onLoginError(message);
239124
}
240125

241126
@Override
242127
protected void accept(UserInfoBean data) {
243128
mPlaceholderView.dismiss();
244129
if (TextUtils.isEmpty(data.getUserId())) {
245-
notifyLoginError("获取用户信息失败,该用户没有用户ID");
130+
mPlaceholderView.retry("获取用户信息失败");
246131
AppMobclickAgent.onLoginEvent(getContext(), "ERROR", false, "没有获取到用户ID");
247132
return;
248133
}
@@ -254,12 +139,6 @@ protected void accept(UserInfoBean data) {
254139

255140
UserProvider.getInstance().setLoginUserInfo(data);
256141
AppUI.success(getContext(), R.string.login_success);
257-
258-
// 通知成功
259-
if (mWebLoginListener != null) {
260-
mWebLoginListener.onLoginSuccess(data);
261-
}
262-
263142
getActivity().setResult(Activity.RESULT_OK);
264143
getActivity().finish();
265144
}
@@ -273,7 +152,6 @@ public WebViewClient getWebViewClient() {
273152
@Override
274153
public void onPageStarted(WebView view, String url, Bitmap favicon) {
275154
super.onPageStarted(view, url, favicon);
276-
mIsLoadFinish = false;
277155
if (!TextUtils.isEmpty(url) && url.contains("home.cnblogs.com")) {
278156
mPlaceholderView.loading(getString(R.string.loading_user_info));
279157
}
@@ -282,18 +160,15 @@ public void onPageStarted(WebView view, String url, Bitmap favicon) {
282160
@Override
283161
public void onPageFinished(WebView view, String url) {
284162
super.onPageFinished(view, url);
285-
injectJavascriptFromAssets(view, "js/rae-login.js");
286-
mIsLoadFinish = true;
287163
String cookie = CookieManager.getInstance().getCookie(url);
288164

289165
// 登录成功
290166
if (cookie != null && cookie.contains(".CNBlogsCookie")) {
291-
// 同步COOKIE
292-
UserProvider.getInstance().syncFormWebview();
293-
loadUserInfo();
167+
perfromLogin();
294168
}
295169
}
296170

171+
297172
};
298173
}
299174
}

0 commit comments

Comments
 (0)