From 4475d622fdb326e28b1a3c37b1040f5836d43d63 Mon Sep 17 00:00:00 2001 From: Max Date: Wed, 31 Jan 2024 11:42:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90mycard=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/webview/CommonWebViewActivity.java | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/CommonWebViewActivity.java b/app/src/main/java/com/yizhuan/erban/ui/webview/CommonWebViewActivity.java index 192f2d342..6a7f9a224 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/webview/CommonWebViewActivity.java +++ b/app/src/main/java/com/yizhuan/erban/ui/webview/CommonWebViewActivity.java @@ -54,6 +54,7 @@ import com.yizhuan.xchat_android_core.web.bean.WebJsBeanInfo; import com.yizhuan.xchat_android_core.web.event.WebViewRefreshEvent; import com.yizhuan.xchat_android_library.rxbus.RxBus; import com.yizhuan.xchat_android_library.utils.ResUtil; +import com.yizhuan.xchat_android_library.utils.SingleToastUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -195,6 +196,7 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O @SuppressLint("SetJavaScriptEnabled") private void initData() { + webView.getSettings().setAllowFileAccess(true); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); @@ -210,14 +212,13 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O webView.addJavascriptInterface(jsInterface, "androidJsObj"); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.setWebViewClient(new WebViewClient() { - + String packageName; @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Logger.e("shouldOverrideUrlLoading--------" + url); LogUtil.e("shouldOverrideUrlLoading" + url); targetUrl = url; - if (url.contains("tel:")) { //删除直接拨打电话的功能 return true; @@ -225,6 +226,7 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O // ------- 处理结束 ------- if (!(url.startsWith("http") || url.startsWith("https"))) { + handleIntent(url); return true; } @@ -268,6 +270,42 @@ public class CommonWebViewActivity extends BaseActivity implements ShareDialog.O super.onPageStarted(view, url, favicon); mProgressBar.setVisibility(View.VISIBLE); } + + private void handleIntent(String url) { + Intent intent; + try { + if (url.startsWith("intent://")) { + //MyCard、Line + intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); + packageName = intent.getPackage(); + } else { //第三方支付 + intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + } + startActivity(intent); + } catch (Exception e) { + handleCatch(e); + } + } + + private void handleCatch(Exception ex) { + if (packageName != null) { + toGooglePaly(packageName); + } else { + SingleToastUtil.showToast(ex.getMessage()); + } + } + + private void toGooglePaly(String packageName) { + try { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName))); + } catch (android.content.ActivityNotFoundException anfe) { + try { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName))); + } catch (Exception e) { + e.printStackTrace(); + } + } + } }); //获取webviewtitle作为titlebar的title wvcc = new WebChromeClient() { From 3e4d9654c9dd813bd24940c497ccc1a9ce661ecb Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 1 Feb 2024 14:54:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90mycard=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E7=BB=93=E6=9E=9C=E5=9B=9E=E8=B0=83=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 18 ++++++ .../erban/ui/wallet/PaymentResultActivity.kt | 55 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 app/src/main/java/com/yizhuan/erban/ui/wallet/PaymentResultActivity.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 55662883f..9f2939c2b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -355,6 +355,24 @@ android:name=".ui.webview.CommonWebViewActivity" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan" /> + + + + + + + + + + diff --git a/app/src/main/java/com/yizhuan/erban/ui/wallet/PaymentResultActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/wallet/PaymentResultActivity.kt new file mode 100644 index 000000000..0c37259d1 --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/wallet/PaymentResultActivity.kt @@ -0,0 +1,55 @@ +package com.yizhuan.erban.ui.wallet + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import com.chuhai.utils.log.ILog +import com.yizhuan.erban.application.XChatApplication +import com.yizhuan.erban.other.activity.SplashActivity +import com.yizhuan.xchat_android_core.auth.AuthModel +import com.yizhuan.xchat_android_core.pay.PayModel + +/** + * Created by Max on 2024/1/31 10:50 + * Desc: + **/ +class PaymentResultActivity : Activity(), ILog { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + logD("onCreate()") + handler(intent) + } + + private fun handler(intent: Intent?) { + val uri = intent?.data + logD("handler() uri:${uri}") + if (XChatApplication.gStack.activityNum == 1) { + logD("handler() open->splash") + SplashActivity.start(this) + finish() + } else { + val status = uri?.getQueryParameter("status")?.toIntOrNull() + logD("handler() status:$status") + if (status == 1) { + PayModel.get().getWalletInfo(AuthModel.get().currentUid).subscribe() + } + } + finish() + } + + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + logD("onNewIntent()") + handler(intent) + } + + override fun onDestroy() { + super.onDestroy() + logD("onDestroy()") + } + + override fun getLogTag(): String { + return super.getLogTag() + } +} \ No newline at end of file