Clean code
This commit is contained in:
parent
78e08fbc03
commit
2eba323da2
|
|
@ -10,6 +10,7 @@ import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
|
||||||
import com.github.catvod.crawler.SpiderDebug;
|
import com.github.catvod.crawler.SpiderDebug;
|
||||||
|
import com.github.catvod.utils.Notify;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -59,10 +60,9 @@ public class Init {
|
||||||
|
|
||||||
public static void checkPermission() {
|
public static void checkPermission() {
|
||||||
try {
|
try {
|
||||||
Activity activity = Init.getActivity();
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;
|
||||||
if (activity == null || Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;
|
if (context().checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return;
|
||||||
if (activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) return;
|
Notify.show("請允許儲存權限");
|
||||||
activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 9999);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
@ -74,16 +74,14 @@ public class Init {
|
||||||
Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
|
Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
|
||||||
activitiesField.setAccessible(true);
|
activitiesField.setAccessible(true);
|
||||||
Map<?, ?> activities = (Map<?, ?>) activitiesField.get(activityThread);
|
Map<?, ?> activities = (Map<?, ?>) activitiesField.get(activityThread);
|
||||||
for (Object activityRecord : activities.values()) {
|
for (Object o : activities.values()) {
|
||||||
Class<?> activityRecordClass = activityRecord.getClass();
|
Class<?> clz = o.getClass();
|
||||||
Field pausedField = activityRecordClass.getDeclaredField("paused");
|
Field pausedField = clz.getDeclaredField("paused");
|
||||||
pausedField.setAccessible(true);
|
pausedField.setAccessible(true);
|
||||||
if (!pausedField.getBoolean(activityRecord)) {
|
if (!pausedField.getBoolean(o)) {
|
||||||
Field activityField = activityRecordClass.getDeclaredField("activity");
|
Field activityField = clz.getDeclaredField("activity");
|
||||||
activityField.setAccessible(true);
|
activityField.setAccessible(true);
|
||||||
Activity activity = (Activity) activityField.get(activityRecord);
|
return (Activity) activityField.get(o);
|
||||||
SpiderDebug.log(activity.getComponentName().getClassName());
|
|
||||||
return activity;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.github.catvod.net.OkHttp;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class Proxy {
|
public class Proxy {
|
||||||
|
|
@ -15,7 +16,7 @@ public class Proxy {
|
||||||
public static Object[] proxy(Map<String, String> params) throws Exception {
|
public static Object[] proxy(Map<String, String> params) throws Exception {
|
||||||
switch (params.get("do")) {
|
switch (params.get("do")) {
|
||||||
case "ck":
|
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":
|
case "bili":
|
||||||
return Bili.proxy(params);
|
return Bili.proxy(params);
|
||||||
case "webdav":
|
case "webdav":
|
||||||
|
|
@ -29,12 +30,22 @@ public class Proxy {
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
try {
|
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) {
|
} catch (Throwable e) {
|
||||||
findPort();
|
findPort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getPort() {
|
||||||
|
return port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getUrl() {
|
||||||
|
return getUrl(true);
|
||||||
|
}
|
||||||
|
|
||||||
public static String getUrl(boolean local) {
|
public static String getUrl(boolean local) {
|
||||||
try {
|
try {
|
||||||
return (String) method.invoke(null, local);
|
return (String) method.invoke(null, local);
|
||||||
|
|
@ -43,10 +54,6 @@ public class Proxy {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUrl() {
|
|
||||||
return getUrl(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void findPort() {
|
private static void findPort() {
|
||||||
if (port > 0) return;
|
if (port > 0) return;
|
||||||
for (int p = 8964; p < 9999; p++) {
|
for (int p = 8964; p < 9999; p++) {
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -63,7 +64,7 @@ public class Path {
|
||||||
byte[] data = new byte[is.available()];
|
byte[] data = new byte[is.available()];
|
||||||
is.read(data);
|
is.read(data);
|
||||||
is.close();
|
is.close();
|
||||||
return new String(data, "UTF-8");
|
return new String(data, StandardCharsets.UTF_8);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return "";
|
return "";
|
||||||
|
|
|
||||||
|
|
@ -4,18 +4,12 @@ import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
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 com.github.catvod.spider.Init;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class Util {
|
public class Util {
|
||||||
|
|
@ -59,19 +53,9 @@ public class Util {
|
||||||
|
|
||||||
public static String getSize(double size) {
|
public static String getSize(double size) {
|
||||||
if (size <= 0) return "";
|
if (size <= 0) return "";
|
||||||
if (size > 1024 * 1024 * 1024 * 1024.0) {
|
String[] units = new String[]{"bytes", "KB", "MB", "GB", "TB"};
|
||||||
size /= (1024 * 1024 * 1024 * 1024.0);
|
int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
|
||||||
return String.format(Locale.getDefault(), "%.2f%s", size, "TB");
|
return new DecimalFormat("#,##0.#").format(size / Math.pow(1024, digitGroups)) + " " + units[digitGroups];
|
||||||
} 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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String fixUrl(String base, String src) {
|
public static String fixUrl(String base, String src) {
|
||||||
|
|
@ -118,46 +102,4 @@ public class Util {
|
||||||
manager.setPrimaryClip(ClipData.newPlainText("fongmi", text));
|
manager.setPrimaryClip(ClipData.newPlainText("fongmi", text));
|
||||||
Notify.show("已複製 " + 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<String> 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);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
7d41e83085218476c2cd4fc00da14ad8
|
278348cbde9d2e7604de1cc53c37712d
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue