Adjust webview context

This commit is contained in:
FongMi 2022-09-26 17:00:20 +08:00
parent 888c8ddbc4
commit ecd51d491c
6 changed files with 13 additions and 41 deletions

View File

@ -12,6 +12,7 @@ public class MainActivity extends Activity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
new Thread(() -> { new Thread(() -> {
}).start(); }).start();
} }
} }

View File

@ -1,6 +1,5 @@
package com.github.catvod.spider; package com.github.catvod.spider;
import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
@ -10,9 +9,6 @@ import android.widget.Toast;
import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.utils.Trans; import com.github.catvod.utils.Trans;
import java.lang.reflect.Field;
import java.util.Map;
public class Init { public class Init {
private final Handler handler; private final Handler handler;
@ -47,29 +43,4 @@ public class Init {
public static void show(String msg) { public static void show(String msg) {
get().handler.post(() -> Toast.makeText(context(), msg, Toast.LENGTH_SHORT).show()); get().handler.post(() -> Toast.makeText(context(), msg, Toast.LENGTH_SHORT).show());
} }
public static Activity getActivity() {
try {
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
activitiesField.setAccessible(true);
Map<?, ?> activities = (Map<?, ?>) activitiesField.get(activityThread);
for (Object activityRecord : activities.values()) {
Class<?> activityRecordClass = activityRecord.getClass();
Field pausedField = activityRecordClass.getDeclaredField("paused");
pausedField.setAccessible(true);
if (!pausedField.getBoolean(activityRecord)) {
Field activityField = activityRecordClass.getDeclaredField("activity");
activityField.setAccessible(true);
Activity activity = (Activity) activityField.get(activityRecord);
SpiderDebug.log(activity.getComponentName().getClassName());
return activity;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
} }

View File

@ -19,11 +19,13 @@ import java.util.Objects;
public class YiSo extends Spider { public class YiSo extends Spider {
private Context ctx;
private Ali ali; private Ali ali;
@Override @Override
public void init(Context context, String extend) { public void init(Context context, String extend) {
ali = new Ali(extend); ali = new Ali(extend);
ctx = context;
} }
@Override @Override
@ -40,7 +42,7 @@ public class YiSo extends Spider {
public String searchContent(String key, boolean quick) { public String searchContent(String key, boolean quick) {
String url = "https://yiso.fun/api/search?name=" + URLEncoder.encode(key) + "&from=ali"; String url = "https://yiso.fun/api/search?name=" + URLEncoder.encode(key) + "&from=ali";
Map<String, String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();
Misc.loadWebView(url, getWebViewClient(result)); Misc.loadWebView(ctx, url, getWebViewClient(result));
while (!result.containsKey("json")) SystemClock.sleep(250); while (!result.containsKey("json")) SystemClock.sleep(250);
String json = JsonParser.parseString(Objects.requireNonNull(result.get("json"))).getAsJsonPrimitive().getAsString(); String json = JsonParser.parseString(Objects.requireNonNull(result.get("json"))).getAsJsonPrimitive().getAsString();
return Result.string(Item.objectFrom(json).getData().getList()); return Result.string(Item.objectFrom(json).getData().getList());

View File

@ -1,9 +1,10 @@
package com.github.catvod.utils; package com.github.catvod.utils;
import android.content.Context;
import android.net.Uri; import android.net.Uri;
import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.RelativeLayout;
import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.crawler.SpiderDebug;
import com.github.catvod.spider.Init; import com.github.catvod.spider.Init;
@ -138,20 +139,17 @@ public class Misc {
} }
} }
public static void loadWebView(String url) { public static void loadWebView(Context context, String url, WebViewClient client) {
loadWebView(url, new WebViewClient());
}
public static void loadWebView(String url, WebViewClient client) {
Init.run(() -> { Init.run(() -> {
WebView webView = new WebView(Init.context()); WebView webView = new WebView(context);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setDatabaseEnabled(true); webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
webView.setWebViewClient(client); webView.setWebViewClient(client);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(0, 0);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
Init.getActivity().addContentView(webView, params);
webView.loadUrl(url); webView.loadUrl(url);
}); });
} }

Binary file not shown.

View File

@ -1 +1 @@
f913d30766882408e79b7316771dd011 b29b008f7a563d1ee0417ee8bc66127b