修复外部应用传入view action时的处理方法Bug

This commit is contained in:
ZhanGSKen 2025-06-12 02:43:51 +08:00
parent 641098f8fb
commit c04be60b13
5 changed files with 50 additions and 39 deletions

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed Jun 11 13:59:15 HKT 2025 #Wed Jun 11 18:41:20 GMT 2025
stageCount=5 stageCount=5
libraryProject= libraryProject=
baseVersion=15.0 baseVersion=15.0
publishVersion=15.0.4 publishVersion=15.0.4
buildCount=0 buildCount=17
baseBetaVersion=15.0.5 baseBetaVersion=15.0.5

View File

@ -9,6 +9,7 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.webkit.ValueCallback; import android.webkit.ValueCallback;
@ -18,13 +19,13 @@ import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity; import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import cc.winboll.studio.webpagesources.R; import cc.winboll.studio.webpagesources.R;
import cc.winboll.studio.webpagesources.activities.AboutActivity; import cc.winboll.studio.webpagesources.activities.AboutActivity;
import cc.winboll.studio.webpagesources.fragment.SourcesFragment; import cc.winboll.studio.webpagesources.fragment.SourcesFragment;
import cc.winboll.studio.webpagesources.fragment.WebFragment; import cc.winboll.studio.webpagesources.fragment.WebFragment;
import cc.winboll.studio.webpagesources.view.StatusBarView; import cc.winboll.studio.webpagesources.view.StatusBarView;
import com.hjq.toast.ToastUtils;
public class MainActivity extends AppCompatActivity implements IWinBoLLActivity { public class MainActivity extends AppCompatActivity implements IWinBoLLActivity {
@ -68,23 +69,22 @@ public class MainActivity extends AppCompatActivity implements IWinBoLLActivity
ft.show(mWebFragment); ft.show(mWebFragment);
ft.commit(); ft.commit();
// 处理 onCreate 时的 Intent
handleIntent(getIntent());
mStatusBarView = findViewById(R.id.activitymainStatusBarView1); mStatusBarView = findViewById(R.id.activitymainStatusBarView1);
_MainActivity = this; _MainActivity = this;
postStatusBarMessage("主窗口加载完成。"); postStatusBarMessage("主窗口加载完成。");
//ToastUtils.show("Start");
} }
@Override // @Override
protected void onNewIntent(Intent intent) { // protected void onNewIntent(Intent intent) {
super.onNewIntent(intent); // super.onNewIntent(intent);
// 处理 onNewIntent 时的 IntentActivity 已存在时调用 // // 处理 onNewIntent 时的 IntentActivity 已存在时调用
handleIntent(intent); // handleIntent(intent);
} // }
private void handleIntent(Intent intent) { private String getIntentUrl(Intent intent) {
if (Intent.ACTION_VIEW.equals(intent.getAction())) { if (Intent.ACTION_VIEW.equals(intent.getAction())) {
ToastUtils.show("ACTION_VIEW");
Uri data = intent.getData(); Uri data = intent.getData();
if (data != null) { if (data != null) {
String url = data.toString(); // 获取完整 URL String url = data.toString(); // 获取完整 URL
@ -93,17 +93,19 @@ public class MainActivity extends AppCompatActivity implements IWinBoLLActivity
// 在界面显示 URL // 在界面显示 URL
//tvUrl.setText("接收到的 URL\n" + url); //tvUrl.setText("接收到的 URL\n" + url);
mWebFragment.loadUrl(url); //ToastUtils.show(String.format("url %s", url));
return url;
// 示例打开系统浏览器访问该 URL // 示例打开系统浏览器访问该 URL
// Intent browserIntent = new Intent(Intent.ACTION_VIEW, data); // Intent browserIntent = new Intent(Intent.ACTION_VIEW, data);
// startActivity(browserIntent); // startActivity(browserIntent);
} }
} }
return null;
} }
public static void postStatusBarMessage(String msg) { public static void postStatusBarMessage(String msg) {
if(_MainActivity != null) { if (_MainActivity != null) {
_MainActivity.mStatusBarView.postMessage(msg); _MainActivity.mStatusBarView.postMessage(msg);
} }
} }
@ -111,6 +113,10 @@ public class MainActivity extends AppCompatActivity implements IWinBoLLActivity
@Override @Override
protected void onPostCreate(Bundle savedInstanceState) { protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState); super.onPostCreate(savedInstanceState);
String intentUrl = getIntentUrl(getIntent());
if (intentUrl != null && !intentUrl.trim().equals("")) {
mWebFragment.loadUrl(intentUrl);
} else {
if (_mIsLoadedHomePage) { if (_mIsLoadedHomePage) {
//ToastUtils.show("重新加载当前页面"); //ToastUtils.show("重新加载当前页面");
mWebFragment.reloadLastUrl(); mWebFragment.reloadLastUrl();
@ -120,6 +126,7 @@ public class MainActivity extends AppCompatActivity implements IWinBoLLActivity
_mIsLoadedHomePage = true; _mIsLoadedHomePage = true;
} }
} }
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {

View File

@ -381,18 +381,5 @@ public class BaseWebView extends WebView {
public void setOnPageFinished(IOnPageFinished iOnPageFinished) { public void setOnPageFinished(IOnPageFinished iOnPageFinished) {
mIOnPageFinished = iOnPageFinished; mIOnPageFinished = iOnPageFinished;
} }
public class JSConsole {
private Context mContext;
public JSConsole(Context context) {
this.mContext = context;
}
@JavascriptInterface
public void log(String message) {
LogUtils.d(TAG, message);
}
}
} }

View File

@ -13,6 +13,7 @@ import android.view.ViewParent;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import cc.winboll.studio.libaes.views.AButton; import cc.winboll.studio.libaes.views.AButton;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.webpagesources.R; import cc.winboll.studio.webpagesources.R;
import cc.winboll.studio.webpagesources.common.BaseWebView; import cc.winboll.studio.webpagesources.common.BaseWebView;
import cc.winboll.studio.webpagesources.view.URLAddressView; import cc.winboll.studio.webpagesources.view.URLAddressView;
@ -99,8 +100,10 @@ public class WebFragment extends Fragment {
} }
public void loadUrl(String szUrl) { public void loadUrl(String szUrl) {
if(mBaseWebView != null) {
mBaseWebView.loadUrl(szUrl); mBaseWebView.loadUrl(szUrl);
} }
}
public void reloadLastUrl() { public void reloadLastUrl() {
mBaseWebView.stopLoading(); mBaseWebView.stopLoading();

View File

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<network-security-config> <network-security-config>
<!-- 允许 provider.winboll.cc 及其子域名的明文流量 -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">provider.winboll.cc</domain>
</domain-config>
<!-- 允许 winboll.cc 及其子域名的明文流量 --> <!-- 允许 winboll.cc 及其子域名的明文流量 -->
<domain-config cleartextTrafficPermitted="true"> <domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">winboll.cc</domain> <domain includeSubdomains="true">winboll.cc</domain>
@ -14,4 +19,13 @@
<domain-config cleartextTrafficPermitted="true"> <domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">192.168.*.*</domain> <domain includeSubdomains="false">192.168.*.*</domain>
</domain-config> </domain-config>
<!-- 允许 http://10.8.0.250:456 的明文流量 -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">10.8.0.250</domain>
</domain-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">10.8.0.250:456</domain>
</domain-config>
</network-security-config> </network-security-config>