Commit 02a223c1 authored by fallenstardust's avatar fallenstardust

优化聊天室初始化登录

parent 6e4bf02f
......@@ -102,7 +102,6 @@ public class MyCard {
public MyCard(Activity context) {
mContext = context;
//context.getActionBar().hide();
lastModified = context.getSharedPreferences("lastModified", Context.MODE_PRIVATE);
mDefWebViewClient = new DefWebViewClient() {
@Override
......@@ -258,40 +257,7 @@ public class MyCard {
this.activity = activity;
mListener = listener;
}
/*
@JavascriptInterface
public void edit_deck() {
activity.startActivity(new Intent(activity, DeckManagerFragment.class));
}
@JavascriptInterface
public void watch_replay() {
if (mListener != null) {
activity.runOnUiThread(mListener::watchReplay);
}
}
@JavascriptInterface
public void puzzle_mode() {
if (mListener != null) {
activity.runOnUiThread(mListener::puzzleMode);
}
}
@JavascriptInterface
public void openDrawer() {
if (mListener != null) {
activity.runOnUiThread(mListener::openDrawer);
}
}
@JavascriptInterface
public void closeDrawer() {
if (mListener != null) {
activity.runOnUiThread(mListener::closeDrawer);
}
}
*/
@JavascriptInterface
public void backHome() {
if (mListener != null) {
......
......@@ -352,7 +352,7 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
currentMessage = data.get(data.size() - 1);
}
if (currentMessage == null)
tv_message.setText("聊天信息加载中");
tv_message.setText(R.string.loading);
else
tv_message.setText(currentMessage.getName() + ":" + currentMessage.getMessage());
} else {
......@@ -378,7 +378,7 @@ public class MycardFragment extends BaseFragemnt implements View.OnClickListener
public void onChatUserNull() {
Log.e("MyCardFragment", "为空");
pb_chat_loading.setVisibility(View.GONE);
tv_message.setText("登录失败,请退出登录后重新登录");
tv_message.setText(R.string.logining_failed);
}
@Override
......
......@@ -6,6 +6,8 @@ import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
import com.tencent.smtt.sdk.CookieManager;
import com.tencent.smtt.sdk.CookieSyncManager;
import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;
......@@ -95,5 +97,21 @@ public class X5WebView extends WebView {
return super.drawChild(canvas, child, drawingTime);
}
//清除所有cookie
public void removeAllCookie(String urlpath) {
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
String testcookie1 = cookieManager.getCookie(urlpath);
cookieManager.removeAllCookie();
cookieSyncManager.sync();
String testcookie2 = cookieManager.getCookie(urlpath);
}
public void removeAllCookie() {
removeAllCookie(getUrl());
}
}
......@@ -23,7 +23,8 @@ public class ChatMessage {
}
*/
public static ChatMessage toChatMessage(Message message) {
if (message == null)
return null;
if (message.getBody() != null) {
String xs = message.toString();
......
package cn.garymb.ygomobile.ui.mycard.mcchat;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPException;
import java.io.IOException;
import com.ourygo.assistant.util.Util;
import cn.garymb.ygomobile.lite.R;
import cn.garymb.ygomobile.ui.mycard.MycardFragment;
import cn.garymb.ygomobile.ui.mycard.base.OnJoinChatListener;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.ServiceManagement;
import cn.garymb.ygomobile.ui.mycard.mcchat.management.UserManagement;
import cn.garymb.ygomobile.utils.YGOUtil;
public class SplashActivity extends Activity {
public class SplashActivity extends Activity implements OnJoinChatListener {
public static final int CHAT_LOGIN_EXCEPTION_RE = 0;
public static final int CHAT_LOGIN_OK = 1;
public static final int CHAT_LOGIN_EXCEPTION = 2;
public static final int CHAT_LOGIN_LOADING = 3;
public static final int CHAT_JOIN_ROOM_LOADING = 4;
public static final int CHAT_USER_NULL = 5;
ServiceManagement su;
ProgressBar sp_jz;
TextView sp_tv;
LinearLayout sp_li;
@SuppressLint("HandlerLeak")
Handler han = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO: Implement this method
super.handleMessage(msg);
switch (msg.what) {
case 0:
su.setIsConnected(false);
sp_jz.setVisibility(View.GONE);
sp_tv.setText(getString(R.string.logining_failed));
YGOUtil.show(getString(R.string.failed_reason) + msg.obj);
break;
case 1:
startActivity(new Intent(SplashActivity.this, McchatActivity.class));
finish();
break;
case 2:
su.setIsListener(false);
sp_jz.setVisibility(View.GONE);
sp_tv.setText(getString(R.string.logining_failed));
break;
case 3:
sp_jz.setVisibility(View.VISIBLE);
sp_tv.setText(getString(R.string.logining_in));
break;
case 4:
sp_jz.setVisibility(View.VISIBLE);
sp_tv.setText(getString(R.string.logining_in));
break;
case 5:
/*sp_jz.setVisibility(View.GONE);
sp_tv.setText("用户名或密码为空");*/
startActivity(new Intent(SplashActivity.this, MycardFragment.class));
finish();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -94,92 +53,70 @@ public class SplashActivity extends Activity {
UserManagement.setUserPassword(lastModified.getString("user_external_id", null));
su = ServiceManagement.getDx();
join();
su.addJoinRoomListener(this);
su.start();
}
private void join() {
if (!su.isListener()) {
new Thread(() -> {
if (!su.isConnected()) {
han.sendEmptyMessage(4);
login();
}
if (su.isConnected()) {
han.sendEmptyMessage(3);
try {
su.joinChat();
han.sendEmptyMessage(1);
} catch (Exception e) {
han.sendEmptyMessage(2);
}
}
// TODO: Implement this method
}).start();
} else {
han.sendEmptyMessage(1);
}
// TODO: Implement this method
}
private void initView() {
sp_jz = findViewById(R.id.sp_jz);
sp_tv = findViewById(R.id.sp_tv);
sp_li = findViewById(R.id.sp_li);
sp_li.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View p1) {
join();
sp_li.setOnClickListener(p1 -> {
su.start();
// TODO: Implement this method
}
});
// TODO: Implement this method
}
private void login() {
String name = UserManagement.getUserName();
String password = UserManagement.getUserPassword();
if (name != null && password != null) {
Message me = new Message();
me.what = 0;
try {
su.login(name, password);
} catch (InterruptedException e) {
e.printStackTrace();
me.obj = "InterruptedException:" + e;
han.sendMessage(me);
} catch (IOException e) {
me.obj = "IOException:" + e;
e.printStackTrace();
han.sendMessage(me);
} catch (SmackException e) {
me.obj = "SmackException:" + e;
e.printStackTrace();
han.sendMessage(me);
} catch (XMPPException e) {
me.obj = "XMPPException:" + e;
e.printStackTrace();
han.sendMessage(me);
} catch (Exception e) {
me.obj = "其他错误:" + e;
e.printStackTrace();
han.sendMessage(me);
}
// catch (Exception e) {
// Message me = new Message();
// me.obj = e;
// me.what = 0;
// han.sendMessage(me);
// @Override
// public void onLoginExceptionClickRe() {
// su.setIsConnected(false);
// sp_jz.setVisibility(View.GONE);
// sp_tv.setText(getString(R.string.logining_failed));
// YGOUtil.show(getString(R.string.failed_reason) + msg.obj);
// }
@Override
public void onChatLogin(String exception) {
Log.e("SplashActivity", "登录情况" + exception);
sp_jz.setVisibility(View.GONE);
if (TextUtils.isEmpty(exception)) {
startActivity(new Intent(SplashActivity.this, McchatActivity.class));
finish();
} else {
han.sendEmptyMessage(5);
su.setIsListener(false);
sp_tv.setText(getString(R.string.logining_failed));
YGOUtil.show(getString(R.string.failed_reason) + exception);
}
}
// TODO: Implement this method
@Override
public void onChatLoginLoading() {
Log.e("SplashActivity", "登录中");
sp_jz.setVisibility(View.VISIBLE);
sp_tv.setText(getString(R.string.logining_in));
}
@Override
public void onJoinRoomLoading() {
Log.e("SplashActivity", "加入房间中");
sp_jz.setVisibility(View.VISIBLE);
sp_tv.setText(getString(R.string.logining_in));
}
@Override
public void onChatUserNull() {
Log.e("SplashActivity", "用户为空");
finish();
}
@Override
public boolean isListenerEffective() {
return Util.isContextExisted(this);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment