diff --git a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt index e35f66b73da5ee6c7233b587ada04d3d41e0ced3..2f97f1ca129b2af922aaab620be22d9e89b06ddd 100644 --- a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt +++ b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt @@ -535,57 +535,45 @@ class CMSWebViewActivity : BaseMVPActivity0) { - fl_bottom_operation_bar.visible() - bottom_operate_button_layout.visible() - } - } - } catch (e: Exception) { - XLog.error("json parse error", e) - } - } +// if (!TextUtils.isEmpty(control)) { +// try { +// val cmsWorkControl = O2SDKManager.instance().gson.fromJson(control, CMSWorkControl::class.java) +// runOnUiThread { +// var i = 0 +// if (cmsWorkControl.allowDeleteDocument) { +// tv_cms_form_delete_btn.visible() +// i++ +// } +// if (cmsWorkControl.allowPublishDocument) { +// tv_cms_form_publish_btn.visible() +// i++ +// }else { +// if (cmsWorkControl.allowEditDocument && cmsWorkControl.allowSave) { +// if (cmsWorkControl.currentMode == "read") { +// tv_cms_form_edit_btn.visible() +// tv_cms_form_save_btn.gone() +// }else if (cmsWorkControl.currentMode == "edit") { +// tv_cms_form_edit_btn.gone() +// tv_cms_form_save_btn.visible() +// } +// i++ +// }else { +// tv_cms_form_edit_btn.gone() +// tv_cms_form_save_btn.gone() +// } +// } +// if (i>0) { +// fl_bottom_operation_bar.visible() +// bottom_operate_button_layout.visible() +// } +// } +// } catch (e: Exception) { +// XLog.error("json parse error", e) +// } +// } } diff --git a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt index dac35b8acb079bf676a2aa7b9c26ba0080b20dc7..82668761ee987d85de9c2320a90fdde301509662 100644 --- a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt +++ b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt @@ -1,23 +1,25 @@ package net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.scanlogin +import android.net.Uri import android.os.Bundle import android.text.TextUtils +import com.google.gson.reflect.TypeToken import kotlinx.android.synthetic.main.activity_scan_login.* +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.O2SDKManager import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BaseMVPActivity -import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.RetrofitClient +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.cms.view.CMSWebViewActivity +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.webview.O2WebViewActivity +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.webview.TaskWebViewActivity +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.APIAddressHelper import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.StringUtil import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XToast +import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.goThenKill import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.gone import net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.visible -import okhttp3.Call -import okhttp3.Callback -import okhttp3.Request -import okhttp3.Response -import java.io.IOException import java.util.regex.Matcher import java.util.regex.Pattern @@ -45,7 +47,7 @@ class ScanLoginActivity : BaseMVPActivity(CMSWebViewActivity.startBundleDataWithOptions(documentId!!, "", "{ \"readonly\": $readonly }")) + return + } + } else if (result.contains("x_desktop/work.html") + || result.contains("x_desktop/workmobile.html") + || result.contains("x_desktop/workmobilewithaction.html")) { + val uri: Uri = Uri.parse(result) + var workId = uri.getQueryParameter("workId") + if (TextUtils.isEmpty(workId)) { + workId = uri.getQueryParameter("workid") + } + if (TextUtils.isEmpty(workId)) { + workId = uri.getQueryParameter("work") + } + if (TextUtils.isEmpty(workId)) { + workId = uri.getQueryParameter("workcompletedid") + } + if (TextUtils.isEmpty(workId)) { + workId = uri.getQueryParameter("workcompletedId") + } + if (TextUtils.isEmpty(workId)) { + workId = uri.getQueryParameter("id") + } + if (!TextUtils.isEmpty(workId)) { + goThenKill(TaskWebViewActivity.start(workId, "", "")) + return + } + } else if (result.contains("x_desktop/app.html") + || result.contains("x_desktop/appMobile.html")) { + val uri: Uri = Uri.parse(result) + val app = uri.getQueryParameter("app") + val status = uri.getQueryParameter("status") + if (!TextUtils.isEmpty(app) && !TextUtils.isEmpty(status)) { + XLog.info("app: $app status: $status") + val type = object : TypeToken>() {}.type + val statusMap: HashMap = O2SDKManager.instance().gson.fromJson(status, type) + if (app == "process.Work") { + var work = statusMap["workId"] + if (TextUtils.isEmpty(work)) { + work = statusMap["workCompletedId"] + } + if (!TextUtils.isEmpty(work)) { + goThenKill(TaskWebViewActivity.start(work, "", "")) + return + } + } else if (app == "cms.Document") { + val documentId = statusMap["documentId"] + val readonly = statusMap["readonly"] ?: false + if (!TextUtils.isEmpty(documentId)) { + goThenKill(CMSWebViewActivity.startBundleDataWithOptions(documentId!!, "", "{ \"readonly\": $readonly }")) + return + } + } + } + } + XLog.info("没有处理完成,默认webview中打开") + O2WebViewActivity.openWebView(this, "", result) + } else { + XLog.info("外部页面:$result") + AndroidUtils.runDefaultBrowser(this, result) + finish() + } } private fun parseMeta() { diff --git a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt index d650a50ddc868128a24bfc7698689b9ad41ba2ca..e18a5e0ab49db040c8ad086dba40cb26f7d8308e 100644 --- a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt +++ b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt @@ -35,18 +35,19 @@ class O2WebViewActivity : AppCompatActivity() { setContentView(R.layout.activity_o2_web_view) val title = intent?.extras?.getString(TitleKey) ?: "网页" val url = intent?.extras?.getString(UrlKey) ?: "https://www.o2oa.net" - // actionbar val toolbar: Toolbar? = findViewById(R.id.toolbar_snippet_top_bar) toolbar?.title = "" setSupportActionBar(toolbar) - val toolbarTitle: TextView? = findViewById(R.id.tv_snippet_top_title) - toolbarTitle?.text = title + updateToolbarTitle(title) toolbar?.setNavigationIcon(R.mipmap.ic_back_mtrl_white_alpha) toolbar?.setNavigationOnClickListener { finish() } //webivew web_view.webChromeClient = webChromeClient + webChromeClient.onO2ReceivedTitle = { t -> + updateToolbarTitle(t) + } web_view.webViewClient = object : WebViewClient() { override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) { XLog.error("ssl error, $error") @@ -62,4 +63,9 @@ class O2WebViewActivity : AppCompatActivity() { web_view.loadUrl(url) } + + fun updateToolbarTitle(title: String) { + val toolbarTitle: TextView? = findViewById(R.id.tv_snippet_top_title) + toolbarTitle?.text = title + } } \ No newline at end of file diff --git a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java index df34f15589d57db06e6ccffcb932c56f6d0019c2..eeeb35aa0437e56a9a6b43422dcd24b521a57e8b 100644 --- a/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java +++ b/app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java @@ -49,7 +49,8 @@ public class StringUtil { */ public static boolean isUrl(String str) { // String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"; - String regex = "((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?"; +// String regex = "((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?"; + String regex = "^(http(s)?:\\/\\/)\\w+[^\\s]+(\\.[^\\s]+){1,}$"; return match(regex, str); }