diff --git a/app/src/main/java/com/github/catvod/spider/Init.java b/app/src/main/java/com/github/catvod/spider/Init.java index 35f7b05b..d61d1280 100644 --- a/app/src/main/java/com/github/catvod/spider/Init.java +++ b/app/src/main/java/com/github/catvod/spider/Init.java @@ -10,6 +10,7 @@ import android.os.Handler; import android.os.Looper; import com.github.catvod.crawler.SpiderDebug; +import com.github.catvod.utils.Notify; import java.lang.reflect.Field; import java.util.Map; @@ -59,10 +60,9 @@ public class Init { public static void checkPermission() { try { - Activity activity = Init.getActivity(); - if (activity == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return; - if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return; - activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 9999); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return; + if (context().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return; + Notify.show("請允許儲存權限"); } catch (Exception e) { e.printStackTrace(); } @@ -74,16 +74,14 @@ public class Init { 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"); + for (Object o : activities.values()) { + Class clz = o.getClass(); + Field pausedField = clz.getDeclaredField("paused"); pausedField.setAccessible(true); - if (!pausedField.getBoolean(activityRecord)) { - Field activityField = activityRecordClass.getDeclaredField("activity"); + if (!pausedField.getBoolean(o)) { + Field activityField = clz.getDeclaredField("activity"); activityField.setAccessible(true); - Activity activity = (Activity) activityField.get(activityRecord); - SpiderDebug.log(activity.getComponentName().getClassName()); - return activity; + return (Activity) activityField.get(o); } } return null; diff --git a/app/src/main/java/com/github/catvod/spider/Proxy.java b/app/src/main/java/com/github/catvod/spider/Proxy.java index e5312ec4..cad18959 100644 --- a/app/src/main/java/com/github/catvod/spider/Proxy.java +++ b/app/src/main/java/com/github/catvod/spider/Proxy.java @@ -5,6 +5,7 @@ import com.github.catvod.net.OkHttp; import java.io.ByteArrayInputStream; import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; import java.util.Map; public class Proxy { @@ -15,7 +16,7 @@ public class Proxy { public static Object[] proxy(Map params) throws Exception { switch (params.get("do")) { case "ck": - return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes("UTF-8"))}; + return new Object[]{200, "text/plain; charset=utf-8", new ByteArrayInputStream("ok".getBytes(StandardCharsets.UTF_8))}; case "bili": return Bili.proxy(params); case "webdav": @@ -29,12 +30,22 @@ public class Proxy { public static void init() { try { - method = Class.forName("com.github.catvod.Proxy").getMethod("getUrl", boolean.class); + Class clz = Class.forName("com.github.catvod.Proxy"); + port = (int) clz.getMethod("getPort").invoke(null); + method = clz.getMethod("getUrl", boolean.class); } catch (Throwable e) { findPort(); } } + public static int getPort() { + return port; + } + + public static String getUrl() { + return getUrl(true); + } + public static String getUrl(boolean local) { try { return (String) method.invoke(null, local); @@ -43,10 +54,6 @@ public class Proxy { } } - public static String getUrl() { - return getUrl(true); - } - private static void findPort() { if (port > 0) return; for (int p = 8964; p < 9999; p++) { diff --git a/app/src/main/java/com/github/catvod/utils/Path.java b/app/src/main/java/com/github/catvod/utils/Path.java index e2cf7aa4..4a5c8a1f 100644 --- a/app/src/main/java/com/github/catvod/utils/Path.java +++ b/app/src/main/java/com/github/catvod/utils/Path.java @@ -10,6 +10,7 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -63,7 +64,7 @@ public class Path { byte[] data = new byte[is.available()]; is.read(data); is.close(); - return new String(data, "UTF-8"); + return new String(data, StandardCharsets.UTF_8); } catch (IOException e) { e.printStackTrace(); return ""; diff --git a/app/src/main/java/com/github/catvod/utils/Util.java b/app/src/main/java/com/github/catvod/utils/Util.java index 46b2e5d5..a85d3d3c 100644 --- a/app/src/main/java/com/github/catvod/utils/Util.java +++ b/app/src/main/java/com/github/catvod/utils/Util.java @@ -4,18 +4,12 @@ import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.net.Uri; -import android.os.Build; -import android.view.View; -import android.view.ViewGroup; -import android.webkit.ValueCallback; -import android.webkit.WebView; -import android.webkit.WebViewClient; import com.github.catvod.spider.Init; +import java.text.DecimalFormat; import java.util.Arrays; import java.util.List; -import java.util.Locale; import java.util.regex.Pattern; public class Util { @@ -59,19 +53,9 @@ public class Util { public static String getSize(double size) { if (size <= 0) return ""; - if (size > 1024 * 1024 * 1024 * 1024.0) { - size /= (1024 * 1024 * 1024 * 1024.0); - return String.format(Locale.getDefault(), "%.2f%s", size, "TB"); - } else if (size > 1024 * 1024 * 1024.0) { - size /= (1024 * 1024 * 1024.0); - return String.format(Locale.getDefault(), "%.2f%s", size, "GB"); - } else if (size > 1024 * 1024.0) { - size /= (1024 * 1024.0); - return String.format(Locale.getDefault(), "%.2f%s", size, "MB"); - } else { - size /= 1024.0; - return String.format(Locale.getDefault(), "%.2f%s", size, "KB"); - } + String[] units = new String[]{"bytes", "KB", "MB", "GB", "TB"}; + int digitGroups = (int) (Math.log10(size) / Math.log10(1024)); + return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups]; } public static String fixUrl(String base, String src) { @@ -118,46 +102,4 @@ public class Util { manager.setPrimaryClip(ClipData.newPlainText("fongmi", text)); Notify.show("已複製 " + text); } - - public static void loadUrl(WebView webView, String script) { - loadUrl(webView, script, null); - } - - public static void loadUrl(WebView webView, String script, ValueCallback callback) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - webView.evaluateJavascript(script, callback); - } else { - webView.loadUrl("javascript:" + script); - } - } - - public static void addView(View view, ViewGroup.LayoutParams params) { - try { - ViewGroup group = Init.getActivity().getWindow().getDecorView().findViewById(android.R.id.content); - group.addView(view, params); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void removeView(View view) { - try { - ViewGroup group = Init.getActivity().getWindow().getDecorView().findViewById(android.R.id.content); - group.removeView(view); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static void loadWebView(String url, WebViewClient client) { - Init.run(() -> { - WebView webView = new WebView(Init.context()); - webView.getSettings().setDatabaseEnabled(true); - webView.getSettings().setDomStorageEnabled(true); - webView.getSettings().setJavaScriptEnabled(true); - addView(webView, new ViewGroup.LayoutParams(0, 0)); - webView.setWebViewClient(client); - webView.loadUrl(url); - }); - } } diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 4ef699c0..057669f4 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index 85183c90..4708ab64 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -7d41e83085218476c2cd4fc00da14ad8 +278348cbde9d2e7604de1cc53c37712d