Commit 3ed63fe8 by onuma

ChatWebViewクラスを作成。ChatWebViewActivityからViewを分離した。

parent 01d2dff2
...@@ -150,4 +150,10 @@ public interface ABookCommConstants { ...@@ -150,4 +150,10 @@ public interface ABookCommConstants {
} }
String FILE_SAVE_PATH = "/data/user/0/jp.co.agentec.abookplus.check/files/"; String FILE_SAVE_PATH = "/data/user/0/jp.co.agentec.abookplus.check/files/";
String NETWORK_ERROR_PLACE_HOLDER = "file:///android_asset/chat/public_new/chat.html";
String CHAT_PAGE_URL = "file:///android_asset/chat/public_new/chat.html";
String CHAT_ROOM_PAGE_URL = "file:///android_asset/chat/public_new/chat_room.html";
String COLLABORATION_PAGE_URL = "file:///android_asset/chat/public_new/collaboration.html";
String DEFAULT_CHECKSUM = "0000000000";
} }
...@@ -6,49 +6,14 @@ ...@@ -6,49 +6,14 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/background" > android:background="@color/background" >
<!--
<RelativeLayout
android:id="@+id/toolbar_layout"
style="@style/OperationSearchToolBar"
android:layout_height="50dp"
android:layout_width="match_parent">
<TextView
android:id="@+id/title"
style="@style/DialogToolBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/chat"
android:textColor="@color/edt_text"
android:textSize="18sp" />
<ImageButton
android:id="@+id/chat_close_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/ic_operation_close"/>
</RelativeLayout>
-->
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical" > android:orientation="vertical" >
<jp.agentec.abook.abv.ui.home.view.ChatWebView
<WebView android:id="@+id/chatWebview"
android:id="@+id/chatWebview2"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
\ No newline at end of file
package jp.agentec.abook.abv.ui.home.activity; package jp.agentec.abook.abv.ui.home.activity;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DownloadManager; import android.app.DownloadManager;
import android.app.PictureInPictureParams; import android.app.PictureInPictureParams;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
...@@ -18,10 +16,8 @@ import android.database.Cursor; ...@@ -18,10 +16,8 @@ import android.database.Cursor;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import android.net.Uri; import android.net.Uri;
import android.net.http.SslError;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
...@@ -30,24 +26,18 @@ import android.os.Environment; ...@@ -30,24 +26,18 @@ import android.os.Environment;
import android.provider.BaseColumns; import android.provider.BaseColumns;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.ViewGroup;
import android.webkit.CookieManager; import android.webkit.CookieManager;
import android.webkit.DownloadListener; import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult; import android.webkit.JsResult;
import android.webkit.PermissionRequest; import android.webkit.PermissionRequest;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback; import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
import org.json.adf.JSONObject; import org.json.adf.JSONObject;
...@@ -60,26 +50,18 @@ import java.io.InputStream; ...@@ -60,26 +50,18 @@ import java.io.InputStream;
import java.net.URL; import java.net.URL;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Stack; import java.util.Stack;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import jp.agentec.abook.abv.bl.acms.client.AcmsClient; import jp.agentec.abook.abv.bl.acms.client.AcmsClient;
import jp.agentec.abook.abv.bl.acms.client.json.ArchiveDetailJSON;
import jp.agentec.abook.abv.bl.acms.client.json.ArchiveListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.ChangeRoomNameJSON;
import jp.agentec.abook.abv.bl.acms.client.json.CreatedRoomJSON;
import jp.agentec.abook.abv.bl.acms.client.json.GetFavoriteGroupJSON; import jp.agentec.abook.abv.bl.acms.client.json.GetFavoriteGroupJSON;
import jp.agentec.abook.abv.bl.acms.client.json.GetFavoriteUserJSON; import jp.agentec.abook.abv.bl.acms.client.json.GetFavoriteUserJSON;
import jp.agentec.abook.abv.bl.acms.client.json.GroupListJSON; import jp.agentec.abook.abv.bl.acms.client.json.GroupListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.MessageInfoListJSON; import jp.agentec.abook.abv.bl.acms.client.json.MessageInfoListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.MyInfoJSON; import jp.agentec.abook.abv.bl.acms.client.json.MyInfoJSON;
import jp.agentec.abook.abv.bl.acms.client.json.RoomJSON;
import jp.agentec.abook.abv.bl.acms.client.json.RoomListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.UnreadCountJSON; import jp.agentec.abook.abv.bl.acms.client.json.UnreadCountJSON;
import jp.agentec.abook.abv.bl.acms.client.json.UserInviteResultJSON;
import jp.agentec.abook.abv.bl.common.ABVEnvironment; import jp.agentec.abook.abv.bl.common.ABVEnvironment;
import jp.agentec.abook.abv.bl.common.CommonExecutor; import jp.agentec.abook.abv.bl.common.CommonExecutor;
import jp.agentec.abook.abv.bl.common.constant.ABookCommConstants; import jp.agentec.abook.abv.bl.common.constant.ABookCommConstants;
...@@ -88,11 +70,7 @@ import jp.agentec.abook.abv.bl.common.exception.AcmsException; ...@@ -88,11 +70,7 @@ import jp.agentec.abook.abv.bl.common.exception.AcmsException;
import jp.agentec.abook.abv.bl.common.exception.NetworkDisconnectedException; import jp.agentec.abook.abv.bl.common.exception.NetworkDisconnectedException;
import jp.agentec.abook.abv.bl.common.log.Logger; import jp.agentec.abook.abv.bl.common.log.Logger;
import jp.agentec.abook.abv.bl.data.ABVDataCache; import jp.agentec.abook.abv.bl.data.ABVDataCache;
import jp.agentec.abook.abv.bl.dto.ArchiveDto;
import jp.agentec.abook.abv.bl.dto.ChatGroupDto;
import jp.agentec.abook.abv.bl.dto.ChatMessageDto; import jp.agentec.abook.abv.bl.dto.ChatMessageDto;
import jp.agentec.abook.abv.bl.dto.ChatRoomDto;
import jp.agentec.abook.abv.bl.dto.MeetingDto;
import jp.agentec.abook.abv.bl.dto.PushMessageDto; import jp.agentec.abook.abv.bl.dto.PushMessageDto;
import jp.agentec.abook.abv.bl.dto.ShopMemberDto; import jp.agentec.abook.abv.bl.dto.ShopMemberDto;
import jp.agentec.abook.abv.bl.logic.AbstractLogic; import jp.agentec.abook.abv.bl.logic.AbstractLogic;
...@@ -107,14 +85,12 @@ import jp.agentec.abook.abv.ui.common.constant.ErrorCode; ...@@ -107,14 +85,12 @@ import jp.agentec.abook.abv.ui.common.constant.ErrorCode;
import jp.agentec.abook.abv.ui.common.constant.ErrorMessage; import jp.agentec.abook.abv.ui.common.constant.ErrorMessage;
import jp.agentec.abook.abv.ui.common.constant.NaviConsts; import jp.agentec.abook.abv.ui.common.constant.NaviConsts;
import jp.agentec.abook.abv.ui.common.dialog.ABookAlertDialog; import jp.agentec.abook.abv.ui.common.dialog.ABookAlertDialog;
import jp.agentec.abook.abv.ui.common.util.ABVToastUtil;
import jp.agentec.abook.abv.ui.common.util.AlertDialogUtil; import jp.agentec.abook.abv.ui.common.util.AlertDialogUtil;
import jp.agentec.abook.abv.ui.home.helper.ActivityHandlingHelper; import jp.agentec.abook.abv.ui.home.helper.ActivityHandlingHelper;
import jp.agentec.abook.abv.ui.home.helper.VideoEncoder; import jp.agentec.abook.abv.ui.home.helper.VideoEncoder;
import jp.agentec.abook.abv.ui.home.view.ChatWebView;
import jp.agentec.abook.abv.ui.home.view.FullscreenableChromeClient; import jp.agentec.abook.abv.ui.home.view.FullscreenableChromeClient;
import jp.agentec.abook.abv.ui.viewer.activity.CommunicationWebViewActivity; import jp.agentec.abook.abv.ui.viewer.activity.CommunicationWebViewActivity;
import jp.agentec.abook.abv.ui.viewer.activity.ContentViewActivity;
import jp.agentec.abook.abv.ui.viewer.activity.ParentWebViewActivity;
import jp.agentec.adf.util.CollectionUtil; import jp.agentec.adf.util.CollectionUtil;
import jp.agentec.adf.util.StringUtil; import jp.agentec.adf.util.StringUtil;
...@@ -125,42 +101,34 @@ import static org.chromium.net.NetError.ERR_FAILED; ...@@ -125,42 +101,34 @@ import static org.chromium.net.NetError.ERR_FAILED;
*/ */
public class ChatWebViewActivity extends CommunicationWebViewActivity { public class ChatWebViewActivity extends CommunicationWebViewActivity {
private WebView mChatWebView; public ChatWebView mChatWebView;
private String chatWebviewUrl; private String chatWebviewUrl;
private final String TAG = "ChatWebViewActivity"; private final String TAG = "ChatWebViewActivity";
private final String NETWORK_ERROR_PLACE_HOLDER = "file:///android_asset/chat/public_new/chat.html";
private final String CHAT_PAGE_URL = "file:///android_asset/chat/public_new/chat.html";
private final String CHAT_ROOM_PAGE_URL = "file:///android_asset/chat/public_new/chat_room.html";
private final String COLLABORATION_PAGE_URL = "file:///android_asset/chat/public_new/collaboration.html";
private final String DEFAULT_CHECKSUM = "0000000000";
//AISDevelop
private JsInf jsInf = new JsInf();
private ValueCallback<Uri[]> mUploadMessage; private ValueCallback<Uri[]> mUploadMessage;
private String sid; public String sid;
private String roomName; public String roomName;
private String loginId; public String loginId;
private String shopName; private String shopName;
private boolean isOnline; private boolean isOnline;
private Long roomId; public Long roomId;
private String roomType; public String roomType;
private String collaborationType; public String collaborationType;
private String groupId; public String groupId;
private String beforeRoomType; public String beforeRoomType;
private Integer shopMemberId; public Integer shopMemberId;
private String selectedUserIdList; public String selectedUserIdList;
private String mSkey; public String mSkey;
private Integer joinMeetingId; public Integer joinMeetingId;
private boolean isPIP; private boolean isPIP;
private boolean isStop; private boolean isStop;
private String encodedFilePath; private String encodedFilePath;
private Uri encodedVideoPath; private Uri encodedVideoPath;
// 0:協業生成, 1:協業参加 // 0:協業生成, 1:協業参加
private Integer collaborationJoinFlg = 0; public Integer collaborationJoinFlg = 0;
private MeetingManager meetingManager = MeetingManager.getInstance(); public MeetingManager meetingManager = MeetingManager.getInstance();
private ActivityHandlingHelper handlingHelper = ActivityHandlingHelper.getInstance(); private ActivityHandlingHelper handlingHelper = ActivityHandlingHelper.getInstance();
public AlertDialog myAlertDialog; public AlertDialog myAlertDialog;
...@@ -170,18 +138,25 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -170,18 +138,25 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
private BroadcastReceiver receiver; private BroadcastReceiver receiver;
private CommunicationLogic communicationLogic = AbstractLogic.getLogic(CommunicationLogic.class); private CommunicationLogic communicationLogic = AbstractLogic.getLogic(CommunicationLogic.class);
private int mCollaborationType; public int mCollaborationType;
public int mHostRequestFlg = 0;
public boolean needHostAlert = false;
private int mHostRequestFlg = 0;
private boolean needHostAlert = false;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (isNormalSize()) { if (isNormalSize()) {
setPortraitIfNormal(); setPortraitIfNormal();
} }
setContentView(R.layout.chat_webview);
initializeWebView(); initializeWebView();
//setContentView(R.layout.chat_webview);
FrameLayout layout = new FrameLayout(this);
FrameLayout.LayoutParams param = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
//layout.addView(mChatWebView, param);
//addContentView(disasterView_, param);
setContentView(mChatWebView, param);
} }
private void initializeWebView() { private void initializeWebView() {
...@@ -207,13 +182,21 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -207,13 +182,21 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
} }
private void setupChatWebView() {
mChatWebView = new ChatWebView(ChatWebViewActivity.this);
//mChatWebView = findViewById(R.id.chatWebview);
mChatWebView.init();
mChatWebView.setCommunicationLogic(communicationLogic);
mChatWebView.setChatWebViewActivity(this);
}
private void setupDefaultChatWebViewURL() { private void setupDefaultChatWebViewURL() {
//ネットワークがない場合専用のページを表示。 //ネットワークがない場合専用のページを表示。
ShopMemberDto myInfo = communicationLogic.getMyShopMemberDto(); ShopMemberDto myInfo = communicationLogic.getMyShopMemberDto();
if (myInfo != null) { if (myInfo != null) {
shopMemberId = myInfo.shopMemberId; shopMemberId = myInfo.shopMemberId;
} }
chatWebviewUrl = NETWORK_ERROR_PLACE_HOLDER; chatWebviewUrl = ABookCommConstants.NETWORK_ERROR_PLACE_HOLDER;
if (!ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) { if (!ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) {
registChatRoomPageLoader(); registChatRoomPageLoader();
Logger.d("DEVICE_NOT_CONNECTED_NETWORK:"); Logger.d("DEVICE_NOT_CONNECTED_NETWORK:");
...@@ -229,7 +212,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -229,7 +212,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
if (!isSIDValid) { return; } if (!isSIDValid) { return; }
isOnline = true; isOnline = true;
chatWebviewUrl = CHAT_PAGE_URL; chatWebviewUrl = ABookCommConstants.CHAT_PAGE_URL;
showProgressPopup(); showProgressPopup();
CommonExecutor.execute(new Runnable() { CommonExecutor.execute(new Runnable() {
@Override @Override
...@@ -258,31 +241,6 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -258,31 +241,6 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
}); });
} }
private void setupChatWebView() {
mChatWebView = findViewById(R.id.chatWebview2);
mChatWebView.setOverScrollMode(View.OVER_SCROLL_NEVER); //オーバースクロールしない。
mChatWebView.setVerticalScrollBarEnabled(false); //スクロールバーを消す。
mChatWebView.addJavascriptInterface(jsInf, "android");
WebSettings settings = mChatWebView.getSettings();
settings.setJavaScriptEnabled(true); //Javascriptを有効にする。
settings.setAppCacheEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setMediaPlaybackRequiresUserGesture(false);
settings.setAllowFileAccess(true);
settings.setUseWideViewPort(true);
settings.setAllowContentAccess(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setSaveFormData(false);
settings.setAllowUniversalAccessFromFileURLs(true);
if (Logger.isDebugEnabled()) {
mChatWebView.setWebContentsDebuggingEnabled(true); //デバッグモード(chromeからinspect可)
}
}
private void registChatRoomPageLoader() { private void registChatRoomPageLoader() {
// 最後のチャットのルーム名 // 最後のチャットのルーム名
String lastRoomName = PreferenceUtil.getUserPref(getApplicationContext(), AppDefType.UserPrefKey.CHAT_LAST_ROOMNAME, ""); String lastRoomName = PreferenceUtil.getUserPref(getApplicationContext(), AppDefType.UserPrefKey.CHAT_LAST_ROOMNAME, "");
...@@ -293,7 +251,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -293,7 +251,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
//ページをロード //ページをロード
if (roomId != 0 && roomName != null) { // by push message if (roomId != 0 && roomName != null) { // by push message
try { try {
jsInf.updateRoomList(); mChatWebView.updateRoomList();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
...@@ -303,7 +261,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -303,7 +261,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
} }
if (StringUtil.isNullOrEmpty(collaborationType)) { if (StringUtil.isNullOrEmpty(collaborationType)) {
String parameterData = "sid=" + sid + "&loginId=" + loginId + "&shopName=" + shopName + "&roomId=" + roomId + "&roomName=" + roomName + fixedParam; String parameterData = "sid=" + sid + "&loginId=" + loginId + "&shopName=" + shopName + "&roomId=" + roomId + "&roomName=" + roomName + fixedParam;
mChatWebView.postUrl(CHAT_ROOM_PAGE_URL, parameterData.getBytes()); mChatWebView.postUrl(ABookCommConstants.CHAT_ROOM_PAGE_URL, parameterData.getBytes());
} else { } else {
collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.INVITE; collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.INVITE;
try { try {
...@@ -357,7 +315,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -357,7 +315,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
// WebView内のAlert Dialogを処理する // WebView内のAlert Dialogを処理する
@Override @Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(COLLABORATION_PAGE_URL)) { if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(ABookCommConstants.COLLABORATION_PAGE_URL)) {
mChatWebView.loadUrl("javascript:coview_api.HeartBeatUser(globalUserInfo.loginId);"); mChatWebView.loadUrl("javascript:coview_api.HeartBeatUser(globalUserInfo.loginId);");
} }
if (myAlertDialog != null && myAlertDialog.isShowing()) { if (myAlertDialog != null && myAlertDialog.isShowing()) {
...@@ -431,7 +389,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -431,7 +389,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
if (roomId != null) { if (roomId != null) {
mChatWebView.loadUrl(String.format("javascript:CHAT_UI.joinRoom('%s', '%s');", roomId.toString(), roomName.toString())); mChatWebView.loadUrl(String.format("javascript:CHAT_UI.joinRoom('%s', '%s');", roomId.toString(), roomName.toString()));
} else { } else {
mChatWebView.loadUrl(CHAT_PAGE_URL); mChatWebView.loadUrl(ABookCommConstants.CHAT_PAGE_URL);
} }
} else if (tempMessage.equals(getString(R.string.error_fail_record))) { } else if (tempMessage.equals(getString(R.string.error_fail_record))) {
mChatWebView.loadUrl("javascript:recordFinished()"); mChatWebView.loadUrl("javascript:recordFinished()");
...@@ -588,7 +546,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -588,7 +546,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
} else { } else {
isOnline = true; isOnline = true;
mChatWebView.loadUrl("javascript:CHAT_UI.refreshForOnline();"); mChatWebView.loadUrl("javascript:CHAT_UI.refreshForOnline();");
if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(CHAT_ROOM_PAGE_URL)) { if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(ABookCommConstants.CHAT_ROOM_PAGE_URL)) {
mChatWebView.loadUrl("javascript:window.location.reload();"); mChatWebView.loadUrl("javascript:window.location.reload();");
} }
} }
...@@ -639,7 +597,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -639,7 +597,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
mChatWebView.removeView(view); mChatWebView.removeView(view);
view.removeAllViews(); view.removeAllViews();
mChatWebView.reload(); mChatWebView.reload();
mChatWebView.loadUrl(NETWORK_ERROR_PLACE_HOLDER); mChatWebView.loadUrl(ABookCommConstants.NETWORK_ERROR_PLACE_HOLDER);
} }
Logger.d("WEB_VIEW_ERROR", "error code:" + errorCode + " - " + description); Logger.d("WEB_VIEW_ERROR", "error code:" + errorCode + " - " + description);
} }
...@@ -699,87 +657,6 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -699,87 +657,6 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
}); });
} }
/**
* コミュニケーションメニューダイアログ
*/
public void showCommunicationMenuDialog2() {
mCommunicationMenuDialog = new Dialog(this);
mCommunicationMenuDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mCommunicationMenuDialog.setCanceledOnTouchOutside(false);
mCommunicationMenuDialog.setContentView(R.layout.communication_menu_dialog);
List<PushMessageDto> pushMessageDtoList = pushMessageLogic.getAllPushMessageList();
boolean existUnreadFlg = false;
for (PushMessageDto pushMessageDto : pushMessageDtoList) {
if (!pushMessageDto.readingFlg) {
existUnreadFlg = true;
break;
}
}
ImageView ivIcon = (ImageView)mCommunicationMenuDialog.findViewById(R.id.btn_push_message_list);
if (existUnreadFlg) {
ivIcon.setBackgroundResource(R.drawable.ic_communication_push_message_list_with_badge);
} else {
ivIcon.setBackgroundResource(R.drawable.ic_communication_push_message_list);
}
LinearLayout ll_menuItem_meeting = (LinearLayout)mCommunicationMenuDialog.findViewById(R.id.ll_item_meeting);
ll_menuItem_meeting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityHandlingHelper.getInstance().startMeetingActivity();
mCommunicationMenuDialog.dismiss();
}
});
LinearLayout ll_menuItem_push_message = (LinearLayout)mCommunicationMenuDialog.findViewById(R.id.ll_item_push_message);
ll_menuItem_push_message.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// showOperationSelectDialog();
mCommunicationMenuDialog.dismiss();
}
});
LinearLayout ll_menuItem_push_message_list = (LinearLayout)mCommunicationMenuDialog.findViewById(R.id.ll_item_push_message_list);
ll_menuItem_push_message_list.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// showPushMessageListDialog();
mCommunicationMenuDialog.dismiss();
}
});
// chat
LinearLayout ll_menuItem_chat = (LinearLayout)mCommunicationMenuDialog.findViewById(R.id.ll_item_chat);
ll_menuItem_chat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// チャット利用のはネットワークが繋がる時のみ
if (ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) {
showProgressPopup();
ActivityHandlingHelper.getInstance().startChatWebViewActivity();
mCommunicationMenuDialog.dismiss();
} else {
ABVToastUtil.showMakeText(ChatWebViewActivity.this, R.string.request_network_connection, Toast.LENGTH_SHORT);
return;
}
}
});
mCommunicationMenuDialog.findViewById(R.id.close_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCommunicationMenuDialog.dismiss();
}
});
mCommunicationMenuDialog.show();
}
// 保存するファイルをjpgに固定する // 保存するファイルをjpgに固定する
public String getFileName(String url) { public String getFileName(String url) {
String filenameWithoutExtension = ""; String filenameWithoutExtension = "";
...@@ -948,775 +825,10 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -948,775 +825,10 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
return existUnreadFlg; return existUnreadFlg;
} }
private class JsInf {
@JavascriptInterface
public void saveVisitRoomInfo(String roomId, String roomName) {
System.out.println("roomName : " + roomName);
System.out.println("roomId : " + roomId);
// 最後のチャットのルーム名
PreferenceUtil.putUserPref(getApplicationContext(), AppDefType.UserPrefKey.CHAT_LAST_ROOMNAME, roomName);
// 最後のチャットのルーム
PreferenceUtil.putUserPref(getApplicationContext(), AppDefType.UserPrefKey.CHAT_LAST_ROOMID, roomId);
}
@JavascriptInterface
public void getLoginParameter() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
getLogin();
}
});
}
@JavascriptInterface
public void getGlobalParameter() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
getQueryParam();
}
});
}
@JavascriptInterface
public void goHome() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
backToHome();
}
});
}
@JavascriptInterface
public void openOperationRelatedContent() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
showCommonContent();
}
});
}
@JavascriptInterface
public void openCommunication() {
showCommunicationMenuDialog();
}
@JavascriptInterface
public void openCommunicationHome() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(CHAT_PAGE_URL);
}
});
}
@JavascriptInterface
public void reload() {
mChatWebView.post(new Runnable() {
@Override
public void run() {
ActivityHandlingHelper.getInstance().startChatWebViewActivity();
}
});
}
@JavascriptInterface
public void saveSelectedUserList(String userIdList) {
Log.d("userIdList " , userIdList );
selectedUserIdList = userIdList;
}
@JavascriptInterface
public String getSelectedUserList() {
String userList = communicationLogic.getUserList(selectedUserIdList);
Log.d("getSelectedUserList " , userList );
return userList;
}
@JavascriptInterface
public String getRoomList(String roomType, String keyword) {
String chatRoomListStr = communicationLogic.getChatRoomList(Integer.parseInt(roomType), keyword);
return chatRoomListStr;
}
@JavascriptInterface
public void test() {
OperationRelatedContentActivity testact = ActivityHandlingHelper.getInstance().getActivity(OperationRelatedContentActivity.class);
testact.finish();
/*testact.System.runFinalization();
System.exit(0);*/
}
@JavascriptInterface
public void updateRoomList() throws NetworkDisconnectedException, AcmsException {
Map<String, Object> chatRoomList;
RoomListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getRoomList(sid);
communicationLogic.insertChatRoomList(resultJson.roomList);
}
@JavascriptInterface
public void updateMyInfo() throws NetworkDisconnectedException, AcmsException {
updateMyInfoFromServer();
}
@JavascriptInterface
public void updateGroupUser() throws NetworkDisconnectedException, AcmsException {
updateGroupInfoFromServer();
}
@JavascriptInterface
public void createChatRoom(String roomType, String userIdList, String encodedRoomName, String screenFlg, boolean isVoice) throws NetworkDisconnectedException, AcmsException {
CreatedRoomJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).createRoom(sid, roomType, userIdList, encodedRoomName, loginId);
if (ABookCommConstants.FLAG.SCREEN_FLG.MAKE_ROOM.equals(Integer.parseInt(screenFlg))) {
final ChatRoomDto chatRoomDto = communicationLogic.getChatRoom(resultJson.chatRoomDto.chatRoomId);
if (chatRoomDto != null) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(String.format("javascript:CHAT_UI.displayExistRoom('%s');", chatRoomDto.chatRoomId.toString()));
}
});
return;
}
}
communicationLogic.insertChatRoom(resultJson.chatRoomDto);
communicationLogic.addUserInRoom(StringUtil.join(",", userIdList, shopMemberId.toString()), resultJson.chatRoomDto.chatRoomId);
final Integer chatRoomId = resultJson.chatRoomDto.chatRoomId;
final String chatRoomName = resultJson.chatRoomDto.chatRoomName;
if (isVoice) {
roomId = chatRoomId.longValue();
roomName = chatRoomName;
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(String.format("javascript:CHAT_UI.startCollaboration('%s');", ABookCommConstants.FLAG.COLLABORATION_TYPE.AUDIO));
}
});
} else {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(String.format("javascript:CHAT_UI.joinRoom('%s', '%s');", chatRoomId, chatRoomName));
}
});
}
}
@JavascriptInterface
public void changeRoomName(String changeRoomName) throws NetworkDisconnectedException, AcmsException {
ChangeRoomNameJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).changeRoomName(sid, changeRoomName, roomId.intValue());
if (resultJson.status != 200) { return; }
communicationLogic.updateChatRoomName(changeRoomName, roomId.intValue());
joinRoom(roomId.toString(), changeRoomName);
}
@JavascriptInterface
public void joinRoom(String joinRoomId, String joinRoomName) {
ChatRoomDto chatRoom = communicationLogic.getChatRoom(Integer.parseInt(joinRoomId));
roomId = chatRoom.chatRoomId.longValue();
roomName = chatRoom.chatRoomName;
roomType = chatRoom.type.toString();
beforeRoomType = chatRoom.type.toString();
communicationLogic.roomDisplayOff(roomId.intValue(), ABookCommConstants.FLAG.ROOM_VIEW_FLAG.VISIBLE);
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(CHAT_ROOM_PAGE_URL);
}
});
}
@JavascriptInterface
public void roomDisplayOff() {
communicationLogic.roomDisplayOff(roomId.intValue(), ABookCommConstants.FLAG.ROOM_VIEW_FLAG.INVISIBLE);
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(CHAT_PAGE_URL);
}
});
}
@JavascriptInterface
public void inviteUsers(String userIds, boolean isCollaboration) throws NetworkDisconnectedException, AcmsException {
final UserInviteResultJSON result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).inviteUsers(sid, roomId.intValue(), roomName, userIds);
if (result.roomId == null) {
communicationLogic.addUserInRoom(userIds, roomId.intValue());
if (!isCollaboration) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(CHAT_ROOM_PAGE_URL);
}
});
}
} else {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl(String.format("javascript:CHAT_UI.displayExistRoom('%s');", result.roomId.toString()));
}
});
}
}
@JavascriptInterface
public String getRoomType() {
return roomType;
}
@JavascriptInterface
public String getBeforeRoomType() {
return beforeRoomType;
}
@JavascriptInterface
public void clearBeforeRoomType() {
beforeRoomType = null;
}
@JavascriptInterface
public void updateMessages(String roomId) throws NetworkDisconnectedException, AcmsException {
SharedPreferences pref = getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE);
String lastUpdatedDate = pref.getString(ABookCommConstants.KEY.MESSAGE_UPDATED_DATE + roomId, DEFAULT_CHECKSUM);
MessageInfoListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getMessages(sid, roomId, null, lastUpdatedDate);
for (ChatMessageDto chatMessageDto : resultJson.chatMessageDtoArrayList) {
chatMessageDto.chatRoomId = Integer.parseInt(roomId);
}
communicationLogic.insertMessageList(resultJson.chatMessageDtoArrayList);
communicationLogic.insertShopMember(resultJson.shopMemberDtoArrayList);
updateUnreadCount();
SharedPreferences.Editor editor = pref.edit();
editor.putString(ABookCommConstants.KEY.MESSAGE_UPDATED_DATE + roomId, resultJson.updateDate);
editor.commit();
}
@JavascriptInterface
public String getMessageList(String roomId) {
String messageListStr = communicationLogic.getMessages(Integer.parseInt(roomId));
return messageListStr;
}
@JavascriptInterface
public String searchMessages(String keyword, String userList) {
String messageListStr = communicationLogic.searMessages(roomId.intValue(), keyword, userList);
return messageListStr;
}
@JavascriptInterface
public String getFavoriteUsers() {
String favoriteUsersStr = communicationLogic.getFavoriteUsers();
return favoriteUsersStr;
}
@JavascriptInterface
public String getFavoriteUsersNotInRoom() {
String favoriteUsersStr = communicationLogic.getFavoriteUsersNotInRoom(roomId.intValue());
return favoriteUsersStr;
}
@JavascriptInterface
public String getMyInfo() {
String myInfoStr = communicationLogic.getMyInfo();
return myInfoStr;
}
@JavascriptInterface
public String getUsersInRoom(String roomId) {
String attendUsers = communicationLogic.getUsersInRoom(Integer.parseInt(roomId));
return attendUsers;
}
@JavascriptInterface
public String getMyGroupUsers() {
String myGroupUsersStr = communicationLogic.getMyGroupUsers();
return myGroupUsersStr;
}
@JavascriptInterface
public String getMyGroupUsersNotInRoom() {
String myGroupUsersStr = communicationLogic.getMyGroupUsersNotInRoom(roomId.intValue());
return myGroupUsersStr;
}
@JavascriptInterface
public String getMyGroupShopMemberByName(String keyword) {
String searchUserStr = communicationLogic.getMyGroupUserByName(keyword);
return searchUserStr;
}
@JavascriptInterface
public String getMyGroupShopMemberNotInRoomByName(String keywords) {
String searchUserStr = communicationLogic.getMyGroupUserNotInRoomByName(keywords, roomId.intValue());
return searchUserStr;
}
@JavascriptInterface
public String getAllGroupShopMemberByName(String shopMemberName) {
String searchUserStr = communicationLogic.getAllGroupShopMemberByName(shopMemberName);
return searchUserStr;
}
@JavascriptInterface
public String getAllGroupShopMemberNotInRoomByName(String keywords) {
String searchUserStr = communicationLogic.getAllGroupShopMemberNotInRoomByName(keywords, roomId.intValue());
return searchUserStr;
}
@JavascriptInterface
public String getGroupByName(String keyword) {
String searchGroupStr = communicationLogic.getGroupByName(keyword);
return searchGroupStr;
}
@JavascriptInterface
public String getFavoriteGroups() {
String favoriteGroupsStr = communicationLogic.getFavoriteGroups();
return favoriteGroupsStr;
}
@JavascriptInterface
public void updateUserInfo(String shopMemberId) throws NetworkDisconnectedException, AcmsException {
updateUserInfoFromServer(shopMemberId);
}
@JavascriptInterface
public String getGroupInfo(String groupId) {
String groupInfoStr = communicationLogic.getGroupSearchData(Integer.parseInt(groupId));
return groupInfoStr;
}
@JavascriptInterface
public String getGroupInfoForAddUser(String groupId) {
String groupInfoStr = communicationLogic.getGroupSearchDataForAddUser(Integer.parseInt(groupId), roomId.intValue());
return groupInfoStr;
}
@JavascriptInterface
public String getNameCardData(String shopMemberId) {
String nameCardStr = communicationLogic.getNameCardInfo(Integer.parseInt(shopMemberId));
return nameCardStr;
}
@JavascriptInterface
public String getFavoriteGroupsList() {
String favoriteGroupsListStr = communicationLogic.getFavoriteGroups();
return favoriteGroupsListStr;
}
@JavascriptInterface
public boolean addFavoriteUser(String shopMemberId) throws AcmsException {
Integer favoriteCount = communicationLogic.getFavoriteCount();
if (favoriteCount >= ABookCommConstants.SIZE.MAX_FAVORITE_COUNT ) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('" + "お気に入りは最大100件までです。" + "');");
}
});
return false;
} else {
boolean result = false;
try {
result = insertFavoriteUser(shopMemberId);
if (!result) { return false; }
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
}
return false;
}
@JavascriptInterface
public boolean removeFavoriteUser(String shopMemberId) throws AcmsException {
try {
boolean result = deleteFavoriteUser(shopMemberId);
if (!result) {
return false;
}
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
return false;
}
@JavascriptInterface
public boolean addFavoriteGroup(String groupId) throws AcmsException {
Integer favoriteCount = communicationLogic.getFavoriteCount();
if (favoriteCount >= ABookCommConstants.SIZE.MAX_FAVORITE_COUNT) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('" + "お気に入りは最大100件までです。" + "');");
}
});
return false;
} else {
boolean result = false;
try {
result = insertFavoriteGroup(groupId);
if (!result) {
return false;
}
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
}
return false;
}
@JavascriptInterface
public boolean removeFavoriteGroup(String groupId) throws AcmsException {
boolean result = false;
try {
result = deleteFavoriteGroup(groupId);
if (!result) {
return false;
}
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
mChatWebView.post(new Runnable() {
@Override
public void run() {
mChatWebView.loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
return false;
}
@JavascriptInterface
public void updateFavorite() throws NetworkDisconnectedException, AcmsException {
updateFavoriteInfo();
}
@JavascriptInterface
public void updateArchiveList() throws NetworkDisconnectedException, AcmsException {
SharedPreferences pref = getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE);
String updateDate = pref.getString(ABookCommConstants.KEY.ARCHIVE_UPDATED_DATE, DEFAULT_CHECKSUM);
ArchiveListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getArchives(sid, updateDate);
communicationLogic.updateArchives(resultJson.archiveList);
if (StringUtil.isNullOrEmpty(resultJson.archiveLastUpdateDate)) { return; }
SharedPreferences.Editor editor = pref.edit();
editor.putString(ABookCommConstants.KEY.ARCHIVE_UPDATED_DATE, resultJson.archiveLastUpdateDate);
editor.commit();
}
@JavascriptInterface
public String getArchiveList() {
String archiveListStr = communicationLogic.getAllArchive();
return archiveListStr;
}
@JavascriptInterface
public String getArchiveListByName(String keyword) {
String archiveListStr = communicationLogic.getArchiveListByName(keyword);
return archiveListStr;
}
@JavascriptInterface
public String getUserInfo(String shopMemberId) {
String archiveListStr = communicationLogic.getUserInfo(Integer.parseInt(shopMemberId));
return archiveListStr;
}
@JavascriptInterface
public String getUserInfoList(String shopMemberIds) {
String userIds = shopMemberIds;
String UserInfoList = communicationLogic.getUserList(shopMemberIds);
return UserInfoList;
}
@JavascriptInterface
public String getArchiveDetail(String archiveId) {
String archiveListStr = communicationLogic.getArchiveDetail(Integer.parseInt(archiveId));
return archiveListStr;
}
@JavascriptInterface
public void updateArchiveDetail(String archiveId) throws NetworkDisconnectedException, AcmsException {
ArchiveDto archiveDto = communicationLogic.getArchive(Integer.parseInt(archiveId));
RoomJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getRoom(sid, archiveDto.roomId.toString());
archiveDto.roomName = resultJson.chatRoomDto.chatRoomName;
communicationLogic.updateArchiveDetial(archiveDto);
}
@JavascriptInterface
public void joinCollaboration(String collaborationType, String meetingId) throws NetworkDisconnectedException, AcmsException {
joinMeetingId = Integer.parseInt(meetingId);
collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.JOIN;
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).joinCollaboration(sid, roomId.intValue());
moveCollaborationScreen(Integer.parseInt(collaborationType));
}
@JavascriptInterface
public void joinChangedCollaboration(String collaborationType, String meetingId) throws NetworkDisconnectedException, AcmsException {
joinMeetingId = Integer.parseInt(meetingId);
collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.JOIN;
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).joinCollaboration(sid, roomId.intValue());
}
@JavascriptInterface
public void inviteCollaboration(String inviteUserIds, String collaborationType) throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).inviteCollaboration(sid, roomId.intValue(), roomName, inviteUserIds, collaborationType);
}
@JavascriptInterface
public void startCollaboration(String collaborationType) {
collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.CREATE;
moveCollaborationScreen(Integer.parseInt(collaborationType));
}
@JavascriptInterface
public void finishCollaboration() throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).finishCollaboration(sid, roomId.intValue());
}
@JavascriptInterface
public void finishAllCollaboration() throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).finishAllCollaboration(sid, roomId.intValue());
}
@JavascriptInterface
public String getCollaborationJoinFlg() {
return collaborationJoinFlg.toString();
}
@JavascriptInterface
public String getCollaborationType() {
return collaborationType;
}
@JavascriptInterface
public String getToMoveGroupId() {
return groupId;
}
@JavascriptInterface
public void setToMoveGroupId(String moveToGroupId) {
groupId = moveToGroupId;
}
@JavascriptInterface
public String getContentList() {
return communicationLogic.getContentList();
}
@JavascriptInterface
public String getUserListByLoginId(String loginIdList) {
return communicationLogic.getUserListByLoginId(loginIdList);
}
@JavascriptInterface
public int createContentView() {
finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
enterPictureInPictureMode(mPipBuilder.build());
Integer meetingId = null;
meetingManager.close();
try {
connectMeetingServer();
List<MeetingDto> meetingList= meetingManager.getMeetingList(mSkey);
for (MeetingDto meeting : meetingList) {
if (meeting.title.equals("Collaboration__"+roomId) && meetingManager.isOwner()) {
meetingManager.deleteMeeting(meeting.meetingId, mSkey);
}
}
meetingId = meetingManager.createMeeting(mSkey, "Collaboration_"+roomId, roomId.toString());
meetingManager.join(meetingId, mSkey, roomId.toString(), true);
meetingManager.setCollaboration(true);
} catch (Exception e) {
mChatWebView.loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
startContentListActivity(true);
return meetingId.intValue();
}
@JavascriptInterface
public void startContentView() throws InterruptedException {
finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
enterPictureInPictureMode(mPipBuilder.build());
meetingManager.close();
try {
connectMeetingServer();
List<MeetingDto> meetingList= meetingManager.getMeetingList(mSkey);
meetingManager.join(joinMeetingId, mSkey, roomId.toString(), false);
meetingManager.setCollaboration(true);
} catch (Exception e) {
mChatWebView.loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
startContentListActivity(false);
}
@JavascriptInterface
public void joinMeetingRoom(int newMeetingId) throws InterruptedException {
finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
enterPictureInPictureMode(mPipBuilder.build());
meetingManager.close();
try {
connectMeetingServer();
List<MeetingDto> meetingList= meetingManager.getMeetingList(mSkey);
meetingManager.join(joinMeetingId, mSkey, roomId.toString(), false);
meetingManager.setCollaboration(true);
} catch (Exception e) {
mChatWebView.loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
startContentListActivity(false);
}
@JavascriptInterface
public void startPipMode() {
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
enterPictureInPictureMode(mPipBuilder.build());
}
@JavascriptInterface
public void exitPIPmode() {
finishPIPmode();
}
@JavascriptInterface
public void exitMeetingRoom() {
exitAndDeleteMeetingRoom();
finishPIPmode();
}
@JavascriptInterface
public int getJoinCollaborationType() {
return mCollaborationType;
}
@JavascriptInterface
public void setJoinCollaborationType(int collaborationType) {
mCollaborationType = collaborationType;
}
@JavascriptInterface
public void changeCollaboration(int changeCollaborationType, int meetingId) throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).changeCollaboration(sid, roomId.intValue(), changeCollaborationType, meetingId);
}
@JavascriptInterface
public int getAndroidVersion() {
return Build.VERSION.SDK_INT;
}
@JavascriptInterface
public void removeEncodedVideo(String filePath) {
File encodedVideo = new File(filePath);
if (encodedVideo.exists()) {
encodedVideo.delete();
}
}
@JavascriptInterface
public void setHostRequestFlg(int hostRequestFlg) {
mHostRequestFlg = hostRequestFlg;
}
@JavascriptInterface
public int getHostRequestFlg() {
return mHostRequestFlg;
}
@JavascriptInterface
public void finishPip() {
finishPIPmode();
}
@JavascriptInterface
public void setExitHostAlert() {
needHostAlert = true;
}
@JavascriptInterface
public boolean getExitHostAlert() {
if (needHostAlert) {
needHostAlert = false;
return true;
}
return needHostAlert;
}
@JavascriptInterface
public void updatePreMessage(String messageId) throws NetworkDisconnectedException, AcmsException {
if (messageId.equals("0")) {
return;
}
updateMessageFromMessageId(messageId);
}
@JavascriptInterface
public String getMessageListFromMessageId(String messageId) {
if (messageId.equals("0")) {
return "";
}
String messageListStr = communicationLogic.getMessagesFromMessageId(roomId.intValue(), messageId);
return messageListStr;
}
}
/** /**
* 作業一覧へ遷移 * 作業一覧へ遷移
*/ */
private void backToHome() { public void backToHome() {
mChatWebView.loadUrl("javascript:CHAT.leaveRoom()"); mChatWebView.loadUrl("javascript:CHAT.leaveRoom()");
exitAndDeleteMeetingRoom(); exitAndDeleteMeetingRoom();
finish(); finish();
...@@ -1726,14 +838,14 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1726,14 +838,14 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
startActivity(intent, NaviConsts.Left); startActivity(intent, NaviConsts.Left);
} }
private void finishBeforeContentListActivity() { public void finishBeforeContentListActivity() {
OperationRelatedContentActivity beforeActiryty = activityHandlingHelper.getActivity(OperationRelatedContentActivity.class); OperationRelatedContentActivity beforeActiryty = activityHandlingHelper.getActivity(OperationRelatedContentActivity.class);
if (beforeActiryty != null) { if (beforeActiryty != null) {
beforeActiryty.finish(); beforeActiryty.finish();
} }
} }
private void finishPIPmode() { public void finishPIPmode() {
if (isPIP) { if (isPIP) {
getApplication().startActivity(new Intent(this, ChatWebViewActivity.class) getApplication().startActivity(new Intent(this, ChatWebViewActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK)); .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK));
...@@ -1757,7 +869,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1757,7 +869,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
handlingHelper.saveMeetingInfo(null, null, null, false); handlingHelper.saveMeetingInfo(null, null, null, false);
} }
private void startContentListActivity(boolean isOwner) { public void startContentListActivity(boolean isOwner) {
Activity targetActivity = activityHandlingHelper.getCurrentActivity(); Activity targetActivity = activityHandlingHelper.getCurrentActivity();
if (targetActivity instanceof ChatWebViewActivity) { if (targetActivity instanceof ChatWebViewActivity) {
Stack<ABVAuthenticatedActivity> stack = activityHandlingHelper.getCurrentActivityStack(); Stack<ABVAuthenticatedActivity> stack = activityHandlingHelper.getCurrentActivityStack();
...@@ -1777,20 +889,20 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1777,20 +889,20 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
mSkey = meetingManager.getSessionKey(true); mSkey = meetingManager.getSessionKey(true);
} }
private void updateMyInfoFromServer() throws NetworkDisconnectedException, AcmsException { public void updateMyInfoFromServer() throws NetworkDisconnectedException, AcmsException {
MyInfoJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getMyInfo(sid); MyInfoJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getMyInfo(sid);
if (resultJson.shopMemberDto != null) { if (resultJson.shopMemberDto != null) {
communicationLogic.insertMyInfo(resultJson.shopMemberDto); communicationLogic.insertMyInfo(resultJson.shopMemberDto);
} }
} }
private void updateUserInfoFromServer(String shopMemberId) throws NetworkDisconnectedException, AcmsException { public void updateUserInfoFromServer(String shopMemberId) throws NetworkDisconnectedException, AcmsException {
MyInfoJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter) MyInfoJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter)
.getNameCard(sid, shopMemberId); .getNameCard(sid, shopMemberId);
communicationLogic.insertShopMember(resultJson.shopMemberDto); communicationLogic.insertShopMember(resultJson.shopMemberDto);
} }
private boolean insertFavoriteUser(String shopMemberId) throws NetworkDisconnectedException, AcmsException { public boolean insertFavoriteUser(String shopMemberId) throws NetworkDisconnectedException, AcmsException {
boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).insertFavoriteUser(sid,Integer.parseInt(shopMemberId)); boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).insertFavoriteUser(sid,Integer.parseInt(shopMemberId));
if (!result) { return false; } if (!result) { return false; }
List<Integer> shopMeberIds = new ArrayList<>(); List<Integer> shopMeberIds = new ArrayList<>();
...@@ -1799,7 +911,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1799,7 +911,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
return result; return result;
} }
private boolean deleteFavoriteUser(String shopMemberId) throws NetworkDisconnectedException, AcmsException { public boolean deleteFavoriteUser(String shopMemberId) throws NetworkDisconnectedException, AcmsException {
boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter) boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter)
.deleteFavoriteUser(sid, Integer.parseInt(shopMemberId)); .deleteFavoriteUser(sid, Integer.parseInt(shopMemberId));
if (result) { if (result) {
...@@ -1810,7 +922,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1810,7 +922,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
return result; return result;
} }
private boolean insertFavoriteGroup(String groupId) throws NetworkDisconnectedException, AcmsException { public boolean insertFavoriteGroup(String groupId) throws NetworkDisconnectedException, AcmsException {
boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter) boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter)
.insertFavoriteGroup(sid, Integer.parseInt(groupId)); .insertFavoriteGroup(sid, Integer.parseInt(groupId));
return result; return result;
...@@ -1821,7 +933,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1821,7 +933,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
super.onBackPressed(); super.onBackPressed();
} }
private void moveCollaborationScreen(Integer collaborationType) { public void moveCollaborationScreen(Integer collaborationType) {
if (collaborationType.equals(ABookCommConstants.FLAG.COLLABORATION_TYPE.DOCUMENT) && !isValidVersion()) { if (collaborationType.equals(ABookCommConstants.FLAG.COLLABORATION_TYPE.DOCUMENT) && !isValidVersion()) {
mChatWebView.loadUrl("javascript:alert(getLocalizedString('not_support_version'));"); mChatWebView.loadUrl("javascript:alert(getLocalizedString('not_support_version'));");
return; return;
...@@ -1830,12 +942,12 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1830,12 +942,12 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
mChatWebView.post(new Runnable() { mChatWebView.post(new Runnable() {
@Override @Override
public void run() { public void run() {
mChatWebView.loadUrl(COLLABORATION_PAGE_URL); mChatWebView.loadUrl(ABookCommConstants.COLLABORATION_PAGE_URL);
} }
}); });
} }
private boolean deleteFavoriteGroup(String groupId) throws NetworkDisconnectedException, AcmsException { public boolean deleteFavoriteGroup(String groupId) throws NetworkDisconnectedException, AcmsException {
boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter) boolean result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter)
.deleteFavoriteGroup(sid, Integer.parseInt(groupId)); .deleteFavoriteGroup(sid, Integer.parseInt(groupId));
...@@ -1847,10 +959,10 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1847,10 +959,10 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
return true; return true;
} }
private void updateGroupInfoFromServer() throws NetworkDisconnectedException, AcmsException { public void updateGroupInfoFromServer() throws NetworkDisconnectedException, AcmsException {
ArrayList<String> checkSumList = new ArrayList<String>(); ArrayList<String> checkSumList = new ArrayList<String>();
SharedPreferences pref = getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE); SharedPreferences pref = getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE);
String lastUpdatedDate = pref.getString(ABookCommConstants.KEY.GROUP_MEMBER_UPDATED_DATE, DEFAULT_CHECKSUM); String lastUpdatedDate = pref.getString(ABookCommConstants.KEY.GROUP_MEMBER_UPDATED_DATE, ABookCommConstants.DEFAULT_CHECKSUM);
try { try {
GroupListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getGroupInfo(sid, lastUpdatedDate); GroupListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getGroupInfo(sid, lastUpdatedDate);
if (CollectionUtil.isNotEmpty(resultJson.groupList)) { if (CollectionUtil.isNotEmpty(resultJson.groupList)) {
...@@ -1881,7 +993,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1881,7 +993,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
updateGroupInfoFromServer(); updateGroupInfoFromServer();
} }
private void updateFavoriteInfo() throws NetworkDisconnectedException, AcmsException { public void updateFavoriteInfo() throws NetworkDisconnectedException, AcmsException {
updateFavoriteUser(); updateFavoriteUser();
updateFavoriteGroup(); updateFavoriteGroup();
} }
...@@ -1922,7 +1034,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1922,7 +1034,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
// 共通資料画面表示 // 共通資料画面表示
private void showCommonContent() { public void showCommonContent() {
Intent intent = new Intent(); Intent intent = new Intent();
intent.setClass(ChatWebViewActivity.this, OperationRelatedContentActivity.class); intent.setClass(ChatWebViewActivity.this, OperationRelatedContentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
...@@ -1983,7 +1095,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity { ...@@ -1983,7 +1095,7 @@ public class ChatWebViewActivity extends CommunicationWebViewActivity {
protected void onResume() { protected void onResume() {
isStop = false; isStop = false;
super.onResume(); super.onResume();
if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(CHAT_ROOM_PAGE_URL)) { if (mChatWebView.getUrl() != null && mChatWebView.getUrl().equals(ABookCommConstants.CHAT_ROOM_PAGE_URL)) {
mChatWebView.loadUrl("javascript:CHAT_SOCKET.socketCheck();"); mChatWebView.loadUrl("javascript:CHAT_SOCKET.socketCheck();");
} }
} }
......
package jp.agentec.abook.abv.ui.home.view;
import android.app.PictureInPictureParams;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import java.io.File;
import java.util.List;
import java.util.Map;
import jp.agentec.abook.abv.bl.acms.client.AcmsClient;
import jp.agentec.abook.abv.bl.acms.client.json.ArchiveListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.ChangeRoomNameJSON;
import jp.agentec.abook.abv.bl.acms.client.json.CreatedRoomJSON;
import jp.agentec.abook.abv.bl.acms.client.json.MessageInfoListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.RoomJSON;
import jp.agentec.abook.abv.bl.acms.client.json.RoomListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.UserInviteResultJSON;
import jp.agentec.abook.abv.bl.common.ABVEnvironment;
import jp.agentec.abook.abv.bl.common.constant.ABookCommConstants;
import jp.agentec.abook.abv.bl.common.exception.AcmsException;
import jp.agentec.abook.abv.bl.common.exception.NetworkDisconnectedException;
import jp.agentec.abook.abv.bl.common.log.Logger;
import jp.agentec.abook.abv.bl.dto.ArchiveDto;
import jp.agentec.abook.abv.bl.dto.ChatMessageDto;
import jp.agentec.abook.abv.bl.dto.ChatRoomDto;
import jp.agentec.abook.abv.bl.dto.MeetingDto;
import jp.agentec.abook.abv.bl.logic.CommunicationLogic;
import jp.agentec.abook.abv.cl.util.PreferenceUtil;
import jp.agentec.abook.abv.ui.common.appinfo.AppDefType;
import jp.agentec.abook.abv.ui.home.activity.ChatWebViewActivity;
import jp.agentec.abook.abv.ui.home.activity.OperationRelatedContentActivity;
import jp.agentec.abook.abv.ui.home.helper.ActivityHandlingHelper;
import jp.agentec.adf.util.StringUtil;
import static android.content.Context.MODE_PRIVATE;
import static jp.agentec.abook.abv.bl.common.constant.ABookCommConstants.DEFAULT_CHECKSUM;
public class ChatWebView extends WebView {
private Context context;
private CommunicationLogic communicationLogic;
private ChatWebViewActivity activity;
public ChatWebView(Context context) {
super(context);
this.context = context;
}
public void init() {
setOverScrollMode(View.OVER_SCROLL_NEVER); //オーバースクロールしない。
setVerticalScrollBarEnabled(false); //スクロールバーを消す。
addJavascriptInterface(this, "android");
WebSettings settings = getSettings();
settings.setJavaScriptEnabled(true); //Javascriptを有効にする。
settings.setAppCacheEnabled(true);
settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setMediaPlaybackRequiresUserGesture(false);
settings.setAllowFileAccess(true);
settings.setUseWideViewPort(true);
settings.setAllowContentAccess(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setSaveFormData(false);
settings.setAllowUniversalAccessFromFileURLs(true);
if (Logger.isDebugEnabled()) {
setWebContentsDebuggingEnabled(true); //デバッグモード(chromeからinspect可)
}
}
public void setCommunicationLogic(CommunicationLogic communicationLogic){
this.communicationLogic = communicationLogic;
}
public void setChatWebViewActivity(ChatWebViewActivity activity) {
this.activity = activity;
}
@JavascriptInterface
public void saveVisitRoomInfo(String roomId, String roomName) {
System.out.println("roomName : " + roomName);
System.out.println("roomId : " + roomId);
// 最後のチャットのルーム名
PreferenceUtil.putUserPref(context, AppDefType.UserPrefKey.CHAT_LAST_ROOMNAME, roomName);
// 最後のチャットのルーム
PreferenceUtil.putUserPref(context, AppDefType.UserPrefKey.CHAT_LAST_ROOMID, roomId);
}
@JavascriptInterface
public void getLoginParameter() {
post(new Runnable() {
@Override
public void run() {
activity.getLogin();
}
});
}
@JavascriptInterface
public void getGlobalParameter() {
post(new Runnable() {
@Override
public void run() {
activity.getQueryParam();
}
});
}
@JavascriptInterface
public void goHome() {
post(new Runnable() {
@Override
public void run() {
activity.backToHome();
}
});
}
@JavascriptInterface
public void openOperationRelatedContent() {
post(new Runnable() {
@Override
public void run() {
activity.showCommonContent();
}
});
}
@JavascriptInterface
public void openCommunication() {
activity.showCommunicationMenuDialog();
}
@JavascriptInterface
public void openCommunicationHome() {
post(new Runnable() {
@Override
public void run() {
loadUrl(ABookCommConstants.CHAT_PAGE_URL);
}
});
}
@JavascriptInterface
public void reload() {
post(new Runnable() {
@Override
public void run() {
ActivityHandlingHelper.getInstance().startChatWebViewActivity();
}
});
}
@JavascriptInterface
public void saveSelectedUserList(String userIdList) {
Log.d("userIdList " , userIdList );
activity.selectedUserIdList = userIdList;
}
@JavascriptInterface
public String getSelectedUserList() {
String userList = communicationLogic.getUserList(activity.selectedUserIdList);
Log.d("getSelectedUserList " , userList );
return userList;
}
@JavascriptInterface
public String getRoomList(String roomType, String keyword) {
String chatRoomListStr = communicationLogic.getChatRoomList(Integer.parseInt(roomType), keyword);
return chatRoomListStr;
}
@JavascriptInterface
public void test() {
OperationRelatedContentActivity testact = ActivityHandlingHelper.getInstance().getActivity(OperationRelatedContentActivity.class);
testact.finish();
/*testact.System.runFinalization();
System.exit(0);*/
}
@JavascriptInterface
public void updateRoomList() throws NetworkDisconnectedException, AcmsException {
Map<String, Object> chatRoomList;
RoomListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getRoomList(activity.sid);
communicationLogic.insertChatRoomList(resultJson.roomList);
}
@JavascriptInterface
public void updateMyInfo() throws NetworkDisconnectedException, AcmsException {
activity.updateMyInfoFromServer();
}
@JavascriptInterface
public void updateGroupUser() throws NetworkDisconnectedException, AcmsException {
activity.updateGroupInfoFromServer();
}
@JavascriptInterface
public void createChatRoom(String roomType, String userIdList, String encodedRoomName, String screenFlg, boolean isVoice) throws NetworkDisconnectedException, AcmsException {
CreatedRoomJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).createRoom(activity.sid, roomType, userIdList, encodedRoomName, activity.loginId);
if (ABookCommConstants.FLAG.SCREEN_FLG.MAKE_ROOM.equals(Integer.parseInt(screenFlg))) {
final ChatRoomDto chatRoomDto = communicationLogic.getChatRoom(resultJson.chatRoomDto.chatRoomId);
if (chatRoomDto != null) {
post(new Runnable() {
@Override
public void run() {
loadUrl(String.format("javascript:CHAT_UI.displayExistRoom('%s');", chatRoomDto.chatRoomId.toString()));
}
});
return;
}
}
communicationLogic.insertChatRoom(resultJson.chatRoomDto);
communicationLogic.addUserInRoom(StringUtil.join(",", userIdList, activity.shopMemberId.toString()), resultJson.chatRoomDto.chatRoomId);
final Integer chatRoomId = resultJson.chatRoomDto.chatRoomId;
final String chatRoomName = resultJson.chatRoomDto.chatRoomName;
if (isVoice) {
activity.roomId = chatRoomId.longValue();
activity.roomName = chatRoomName;
post(new Runnable() {
@Override
public void run() {
loadUrl(String.format("javascript:CHAT_UI.startCollaboration('%s');", ABookCommConstants.FLAG.COLLABORATION_TYPE.AUDIO));
}
});
} else {
post(new Runnable() {
@Override
public void run() {
loadUrl(String.format("javascript:CHAT_UI.joinRoom('%s', '%s');", chatRoomId, chatRoomName));
}
});
}
}
@JavascriptInterface
public void changeRoomName(String changeRoomName) throws NetworkDisconnectedException, AcmsException {
ChangeRoomNameJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).changeRoomName(activity.sid, changeRoomName, activity.roomId.intValue());
if (resultJson.status != 200) { return; }
communicationLogic.updateChatRoomName(changeRoomName, activity.roomId.intValue());
joinRoom(activity.roomId.toString(), changeRoomName);
}
@JavascriptInterface
public void joinRoom(String joinRoomId, String joinRoomName) {
ChatRoomDto chatRoom = communicationLogic.getChatRoom(Integer.parseInt(joinRoomId));
activity.roomId = chatRoom.chatRoomId.longValue();
activity.roomName = chatRoom.chatRoomName;
activity.roomType = chatRoom.type.toString();
activity.beforeRoomType = chatRoom.type.toString();
communicationLogic.roomDisplayOff(activity.roomId.intValue(), ABookCommConstants.FLAG.ROOM_VIEW_FLAG.VISIBLE);
post(new Runnable() {
@Override
public void run() {
loadUrl(ABookCommConstants.CHAT_ROOM_PAGE_URL);
}
});
}
@JavascriptInterface
public void roomDisplayOff() {
communicationLogic.roomDisplayOff(activity.roomId.intValue(), ABookCommConstants.FLAG.ROOM_VIEW_FLAG.INVISIBLE);
post(new Runnable() {
@Override
public void run() {
loadUrl(ABookCommConstants.CHAT_PAGE_URL);
}
});
}
@JavascriptInterface
public void inviteUsers(String userIds, boolean isCollaboration) throws NetworkDisconnectedException, AcmsException {
final UserInviteResultJSON result = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).inviteUsers(activity.sid, activity.roomId.intValue(), activity.roomName, userIds);
if (result.roomId == null) {
communicationLogic.addUserInRoom(userIds, activity.roomId.intValue());
if (!isCollaboration) {
post(new Runnable() {
@Override
public void run() {
loadUrl(ABookCommConstants.CHAT_ROOM_PAGE_URL);
}
});
}
} else {
post(new Runnable() {
@Override
public void run() {
loadUrl(String.format("javascript:CHAT_UI.displayExistRoom('%s');", result.roomId.toString()));
}
});
}
}
@JavascriptInterface
public String getRoomType() {
return activity.roomType;
}
@JavascriptInterface
public String getBeforeRoomType() {
return activity.beforeRoomType;
}
@JavascriptInterface
public void clearBeforeRoomType() {
activity.beforeRoomType = null;
}
@JavascriptInterface
public void updateMessages(String roomId) throws NetworkDisconnectedException, AcmsException {
SharedPreferences pref = context.getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE);
String lastUpdatedDate = pref.getString(ABookCommConstants.KEY.MESSAGE_UPDATED_DATE + roomId, DEFAULT_CHECKSUM);
MessageInfoListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getMessages(activity.sid, roomId, null, lastUpdatedDate);
for (ChatMessageDto chatMessageDto : resultJson.chatMessageDtoArrayList) {
chatMessageDto.chatRoomId = Integer.parseInt(roomId);
}
communicationLogic.insertMessageList(resultJson.chatMessageDtoArrayList);
communicationLogic.insertShopMember(resultJson.shopMemberDtoArrayList);
activity.updateUnreadCount();
SharedPreferences.Editor editor = pref.edit();
editor.putString(ABookCommConstants.KEY.MESSAGE_UPDATED_DATE + roomId, resultJson.updateDate);
editor.commit();
}
@JavascriptInterface
public String getMessageList(String roomId) {
String messageListStr = communicationLogic.getMessages(Integer.parseInt(roomId));
return messageListStr;
}
@JavascriptInterface
public String searchMessages(String keyword, String userList) {
String messageListStr = communicationLogic.searMessages(activity.roomId.intValue(), keyword, userList);
return messageListStr;
}
@JavascriptInterface
public String getFavoriteUsers() {
String favoriteUsersStr = communicationLogic.getFavoriteUsers();
return favoriteUsersStr;
}
@JavascriptInterface
public String getFavoriteUsersNotInRoom() {
String favoriteUsersStr = communicationLogic.getFavoriteUsersNotInRoom(activity.roomId.intValue());
return favoriteUsersStr;
}
@JavascriptInterface
public String getMyInfo() {
String myInfoStr = communicationLogic.getMyInfo();
return myInfoStr;
}
@JavascriptInterface
public String getUsersInRoom(String roomId) {
String attendUsers = communicationLogic.getUsersInRoom(Integer.parseInt(roomId));
return attendUsers;
}
@JavascriptInterface
public String getMyGroupUsers() {
String myGroupUsersStr = communicationLogic.getMyGroupUsers();
return myGroupUsersStr;
}
@JavascriptInterface
public String getMyGroupUsersNotInRoom() {
String myGroupUsersStr = communicationLogic.getMyGroupUsersNotInRoom(activity.roomId.intValue());
return myGroupUsersStr;
}
@JavascriptInterface
public String getMyGroupShopMemberByName(String keyword) {
String searchUserStr = communicationLogic.getMyGroupUserByName(keyword);
return searchUserStr;
}
@JavascriptInterface
public String getMyGroupShopMemberNotInRoomByName(String keywords) {
String searchUserStr = communicationLogic.getMyGroupUserNotInRoomByName(keywords, activity.roomId.intValue());
return searchUserStr;
}
@JavascriptInterface
public String getAllGroupShopMemberByName(String shopMemberName) {
String searchUserStr = communicationLogic.getAllGroupShopMemberByName(shopMemberName);
return searchUserStr;
}
@JavascriptInterface
public String getAllGroupShopMemberNotInRoomByName(String keywords) {
String searchUserStr = communicationLogic.getAllGroupShopMemberNotInRoomByName(keywords, activity.roomId.intValue());
return searchUserStr;
}
@JavascriptInterface
public String getGroupByName(String keyword) {
String searchGroupStr = communicationLogic.getGroupByName(keyword);
return searchGroupStr;
}
@JavascriptInterface
public String getFavoriteGroups() {
String favoriteGroupsStr = communicationLogic.getFavoriteGroups();
return favoriteGroupsStr;
}
@JavascriptInterface
public void updateUserInfo(String shopMemberId) throws NetworkDisconnectedException, AcmsException {
activity.updateUserInfoFromServer(shopMemberId);
}
@JavascriptInterface
public String getGroupInfo(String groupId) {
String groupInfoStr = communicationLogic.getGroupSearchData(Integer.parseInt(groupId));
return groupInfoStr;
}
@JavascriptInterface
public String getGroupInfoForAddUser(String groupId) {
String groupInfoStr = communicationLogic.getGroupSearchDataForAddUser(Integer.parseInt(groupId), activity.roomId.intValue());
return groupInfoStr;
}
@JavascriptInterface
public String getNameCardData(String shopMemberId) {
String nameCardStr = communicationLogic.getNameCardInfo(Integer.parseInt(shopMemberId));
return nameCardStr;
}
@JavascriptInterface
public String getFavoriteGroupsList() {
String favoriteGroupsListStr = communicationLogic.getFavoriteGroups();
return favoriteGroupsListStr;
}
@JavascriptInterface
public boolean addFavoriteUser(String shopMemberId) throws AcmsException {
Integer favoriteCount = communicationLogic.getFavoriteCount();
if (favoriteCount >= ABookCommConstants.SIZE.MAX_FAVORITE_COUNT ) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('" + "お気に入りは最大100件までです。" + "');");
}
});
return false;
} else {
boolean result = false;
try {
result = activity.insertFavoriteUser(shopMemberId);
if (!result) { return false; }
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
}
return false;
}
@JavascriptInterface
public boolean removeFavoriteUser(String shopMemberId) throws AcmsException {
try {
boolean result = activity.deleteFavoriteUser(shopMemberId);
if (!result) {
return false;
}
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
return false;
}
@JavascriptInterface
public boolean addFavoriteGroup(String groupId) throws AcmsException {
Integer favoriteCount = communicationLogic.getFavoriteCount();
if (favoriteCount >= ABookCommConstants.SIZE.MAX_FAVORITE_COUNT) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('" + "お気に入りは最大100件までです。" + "');");
}
});
return false;
} else {
boolean result = false;
try {
result = activity.insertFavoriteGroup(groupId);
if (!result) {
return false;
}
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
}
return false;
}
@JavascriptInterface
public boolean removeFavoriteGroup(String groupId) throws AcmsException {
boolean result = false;
try {
result = activity.deleteFavoriteGroup(groupId);
if (!result) {
return false;
}
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:CHAT_UI.refreshContactScreen();");
}
});
return true;
} catch (NetworkDisconnectedException e) {
post(new Runnable() {
@Override
public void run() {
loadUrl("javascript:alert('接続しているネットワークがありません。');");
}
});
}
return false;
}
@JavascriptInterface
public void updateFavorite() throws NetworkDisconnectedException, AcmsException {
activity.updateFavoriteInfo();
}
@JavascriptInterface
public void updateArchiveList() throws NetworkDisconnectedException, AcmsException {
SharedPreferences pref = context.getSharedPreferences(ABookCommConstants.TAG, MODE_PRIVATE);
String updateDate = pref.getString(ABookCommConstants.KEY.ARCHIVE_UPDATED_DATE, DEFAULT_CHECKSUM);
ArchiveListJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getArchives(activity.sid, updateDate);
communicationLogic.updateArchives(resultJson.archiveList);
if (StringUtil.isNullOrEmpty(resultJson.archiveLastUpdateDate)) { return; }
SharedPreferences.Editor editor = pref.edit();
editor.putString(ABookCommConstants.KEY.ARCHIVE_UPDATED_DATE, resultJson.archiveLastUpdateDate);
editor.commit();
}
@JavascriptInterface
public String getArchiveList() {
String archiveListStr = communicationLogic.getAllArchive();
return archiveListStr;
}
@JavascriptInterface
public String getArchiveListByName(String keyword) {
String archiveListStr = communicationLogic.getArchiveListByName(keyword);
return archiveListStr;
}
@JavascriptInterface
public String getUserInfo(String shopMemberId) {
String archiveListStr = communicationLogic.getUserInfo(Integer.parseInt(shopMemberId));
return archiveListStr;
}
@JavascriptInterface
public String getUserInfoList(String shopMemberIds) {
String userIds = shopMemberIds;
String UserInfoList = communicationLogic.getUserList(shopMemberIds);
return UserInfoList;
}
@JavascriptInterface
public String getArchiveDetail(String archiveId) {
String archiveListStr = communicationLogic.getArchiveDetail(Integer.parseInt(archiveId));
return archiveListStr;
}
@JavascriptInterface
public void updateArchiveDetail(String archiveId) throws NetworkDisconnectedException, AcmsException {
ArchiveDto archiveDto = communicationLogic.getArchive(Integer.parseInt(archiveId));
RoomJSON resultJson = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getRoom(activity.sid, archiveDto.roomId.toString());
archiveDto.roomName = resultJson.chatRoomDto.chatRoomName;
communicationLogic.updateArchiveDetial(archiveDto);
}
@JavascriptInterface
public void joinCollaboration(String collaborationType, String meetingId) throws NetworkDisconnectedException, AcmsException {
activity.joinMeetingId = Integer.parseInt(meetingId);
activity.collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.JOIN;
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).joinCollaboration(activity.sid, activity.roomId.intValue());
activity.moveCollaborationScreen(Integer.parseInt(collaborationType));
}
@JavascriptInterface
public void joinChangedCollaboration(String collaborationType, String meetingId) throws NetworkDisconnectedException, AcmsException {
activity.joinMeetingId = Integer.parseInt(meetingId);
activity.collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.JOIN;
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).joinCollaboration(activity.sid, activity.roomId.intValue());
}
@JavascriptInterface
public void inviteCollaboration(String inviteUserIds, String collaborationType) throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).inviteCollaboration(activity.sid, activity.roomId.intValue(), activity.roomName, inviteUserIds, collaborationType);
}
@JavascriptInterface
public void startCollaboration(String collaborationType) {
activity.collaborationJoinFlg = ABookCommConstants.FLAG.COLLABORATION_JOIN_FLG.CREATE;
activity.moveCollaborationScreen(Integer.parseInt(collaborationType));
}
@JavascriptInterface
public void finishCollaboration() throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).finishCollaboration(activity.sid, activity.roomId.intValue());
}
@JavascriptInterface
public void finishAllCollaboration() throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).finishAllCollaboration(activity.sid, activity.roomId.intValue());
}
@JavascriptInterface
public String getCollaborationJoinFlg() {
return activity.collaborationJoinFlg.toString();
}
@JavascriptInterface
public String getCollaborationType() {
return activity.collaborationType;
}
@JavascriptInterface
public String getToMoveGroupId() {
return activity.groupId;
}
@JavascriptInterface
public void setToMoveGroupId(String moveToGroupId) {
activity.groupId = moveToGroupId;
}
@JavascriptInterface
public String getContentList() {
return communicationLogic.getContentList();
}
@JavascriptInterface
public String getUserListByLoginId(String loginIdList) {
return communicationLogic.getUserListByLoginId(loginIdList);
}
@JavascriptInterface
public int createContentView() {
activity.finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
activity.enterPictureInPictureMode(mPipBuilder.build());
Integer meetingId = null;
activity.meetingManager.close();
try {
activity.connectMeetingServer();
List<MeetingDto> meetingList= activity.meetingManager.getMeetingList(activity.mSkey);
for (MeetingDto meeting : meetingList) {
if (meeting.title.equals("Collaboration__" + activity.roomId) && activity.meetingManager.isOwner()) {
activity.meetingManager.deleteMeeting(meeting.meetingId, activity.mSkey);
}
}
meetingId = activity.meetingManager.createMeeting(activity.mSkey, "Collaboration_" + activity.roomId, activity.roomId.toString());
activity.meetingManager.join(meetingId, activity.mSkey, activity.roomId.toString(), true);
activity.meetingManager.setCollaboration(true);
} catch (Exception e) {
loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
activity.startContentListActivity(true);
return meetingId.intValue();
}
@JavascriptInterface
public void startContentView() throws InterruptedException {
activity.finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
activity.enterPictureInPictureMode(mPipBuilder.build());
activity.meetingManager.close();
try {
activity.connectMeetingServer();
List<MeetingDto> meetingList= activity.meetingManager.getMeetingList(activity.mSkey);
activity.meetingManager.join(activity.joinMeetingId, activity.mSkey, activity.roomId.toString(), false);
activity.meetingManager.setCollaboration(true);
} catch (Exception e) {
loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
activity.startContentListActivity(false);
}
@JavascriptInterface
public void joinMeetingRoom(int newMeetingId) throws InterruptedException {
activity.finishBeforeContentListActivity();
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
activity.enterPictureInPictureMode(mPipBuilder.build());
activity.meetingManager.close();
try {
activity.connectMeetingServer();
List<MeetingDto> meetingList= activity.meetingManager.getMeetingList(activity.mSkey);
activity.meetingManager.join(activity.joinMeetingId, activity.mSkey, activity.roomId.toString(), false);
activity.meetingManager.setCollaboration(true);
} catch (Exception e) {
loadUrl("javascript:alert('" + "会議室サーバに接続できませんでした。" + "');");
}
activity.startContentListActivity(false);
}
@JavascriptInterface
public void startPipMode() {
PictureInPictureParams.Builder mPipBuilder = new PictureInPictureParams.Builder();
activity.enterPictureInPictureMode(mPipBuilder.build());
}
@JavascriptInterface
public void exitPIPmode() {
activity.finishPIPmode();
}
@JavascriptInterface
public void exitMeetingRoom() {
activity.exitAndDeleteMeetingRoom();
activity.finishPIPmode();
}
@JavascriptInterface
public int getJoinCollaborationType() {
return activity.mCollaborationType;
}
@JavascriptInterface
public void setJoinCollaborationType(int collaborationType) {
activity.mCollaborationType = collaborationType;
}
@JavascriptInterface
public void changeCollaboration(int changeCollaborationType, int meetingId) throws NetworkDisconnectedException, AcmsException {
AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).changeCollaboration(activity.sid, activity.roomId.intValue(), changeCollaborationType, meetingId);
}
@JavascriptInterface
public int getAndroidVersion() {
return Build.VERSION.SDK_INT;
}
@JavascriptInterface
public void removeEncodedVideo(String filePath) {
File encodedVideo = new File(filePath);
if (encodedVideo.exists()) {
encodedVideo.delete();
}
}
@JavascriptInterface
public void setHostRequestFlg(int hostRequestFlg) {
activity.mHostRequestFlg = hostRequestFlg;
}
@JavascriptInterface
public int getHostRequestFlg() {
return activity.mHostRequestFlg;
}
@JavascriptInterface
public void finishPip() {
activity.finishPIPmode();
}
@JavascriptInterface
public void setExitHostAlert() {
activity.needHostAlert = true;
}
@JavascriptInterface
public boolean getExitHostAlert() {
if (activity.needHostAlert) {
activity.needHostAlert = false;
return true;
}
return activity.needHostAlert;
}
@JavascriptInterface
public void updatePreMessage(String messageId) throws NetworkDisconnectedException, AcmsException {
if (messageId.equals("0")) {
return;
}
activity.updateMessageFromMessageId(messageId);
}
@JavascriptInterface
public String getMessageListFromMessageId(String messageId) {
if (messageId.equals("0")) {
return "";
}
String messageListStr = communicationLogic.getMessagesFromMessageId(activity.roomId.intValue(), messageId);
return messageListStr;
}
}
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