diff --git a/app/src/main/java/com/github/catvod/ali/API.java b/app/src/main/java/com/github/catvod/ali/API.java index 93dab1a9..e4f26464 100644 --- a/app/src/main/java/com/github/catvod/ali/API.java +++ b/app/src/main/java/com/github/catvod/ali/API.java @@ -26,7 +26,7 @@ import com.github.catvod.net.OkHttp; import com.github.catvod.net.OkResult; import com.github.catvod.spider.Init; import com.github.catvod.spider.Proxy; -import com.github.catvod.utils.Prefers; +import com.github.catvod.utils.FileUtil; import com.github.catvod.utils.QRCode; import com.github.catvod.utils.Utils; @@ -34,6 +34,7 @@ import org.json.JSONArray; import org.json.JSONObject; import java.io.ByteArrayInputStream; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -66,10 +67,18 @@ public class API { return Loader.INSTANCE; } + public File getUserCache() { + return FileUtil.getCacheFile("aliyundrive_user"); + } + + public File getOAuthCache() { + return FileUtil.getCacheFile("aliyundrive_oauth"); + } + private API() { tempIds = new ArrayList<>(); - oauth = OAuth.objectFrom(Prefers.getString("aliyundrive_oauth")); - user = User.objectFrom(Prefers.getString("aliyundrive_user")); + oauth = OAuth.objectFrom(FileUtil.read(getOAuthCache())); + user = User.objectFrom(FileUtil.read(getUserCache())); quality = new HashMap<>(); quality.put("4K", "UHD"); quality.put("2k", "QHD"); @@ -432,9 +441,7 @@ public class API { if (Utils.isMobile()) { Init.run(this::showInput); } else { - String url = "https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3"; - Data data = Data.objectFrom(OkHttp.string(url)).getContent().getData(); - Init.run(() -> showQRCode(data)); + showQRCode(); } } @@ -445,13 +452,18 @@ public class API { FrameLayout frame = new FrameLayout(Init.context()); EditText input = new EditText(Init.context()); frame.addView(input, params); - dialog = new AlertDialog.Builder(Init.getActivity()).setTitle("請輸入Token").setView(frame).setNegativeButton(android.R.string.cancel, null).setPositiveButton(android.R.string.ok, (dialog, which) -> onPositive(input.getText().toString())).show(); + dialog = new AlertDialog.Builder(Init.getActivity()).setTitle("請輸入Token").setView(frame).setNeutralButton("QRCode", (dialog, which) -> onNeutral()).setNegativeButton(android.R.string.cancel, null).setPositiveButton(android.R.string.ok, (dialog, which) -> onPositive(input.getText().toString())).show(); } catch (Exception ignored) { } } + private void onNeutral() { + dismiss(); + Init.execute(this::showQRCode); + } + private void onPositive(String text) { - dialog.dismiss(); + dismiss(); Init.execute(() -> { if (text.startsWith("http")) setToken(OkHttp.string(text)); else if (text.length() == 32) setToken(text); @@ -459,6 +471,12 @@ public class API { }); } + private void showQRCode() { + String url = "https://passport.aliyundrive.com/newlogin/qrcode/generate.do?appName=aliyun_drive&fromSite=52&appName=aliyun_drive&appEntrance=web&isMobile=false&lang=zh_CN&returnUrl=&bizParams=&_bx-v=2.2.3"; + Data data = Data.objectFrom(OkHttp.string(url)).getContent().getData(); + Init.run(() -> showQRCode(data)); + } + private void showQRCode(Data data) { try { FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(Utils.dp2px(240), Utils.dp2px(240)); diff --git a/app/src/main/java/com/github/catvod/bean/ali/OAuth.java b/app/src/main/java/com/github/catvod/bean/ali/OAuth.java index 88001aa2..94ff2a9f 100644 --- a/app/src/main/java/com/github/catvod/bean/ali/OAuth.java +++ b/app/src/main/java/com/github/catvod/bean/ali/OAuth.java @@ -2,7 +2,8 @@ package com.github.catvod.bean.ali; import android.text.TextUtils; -import com.github.catvod.utils.Prefers; +import com.github.catvod.ali.API; +import com.github.catvod.utils.FileUtil; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; @@ -43,7 +44,7 @@ public class OAuth { } public OAuth save() { - Prefers.put("aliyundrive_oauth", toString()); + FileUtil.write(API.get().getOAuthCache(), toString()); return this; } diff --git a/app/src/main/java/com/github/catvod/bean/ali/User.java b/app/src/main/java/com/github/catvod/bean/ali/User.java index d274dd3c..596f4187 100644 --- a/app/src/main/java/com/github/catvod/bean/ali/User.java +++ b/app/src/main/java/com/github/catvod/bean/ali/User.java @@ -2,7 +2,8 @@ package com.github.catvod.bean.ali; import android.text.TextUtils; -import com.github.catvod.utils.Prefers; +import com.github.catvod.ali.API; +import com.github.catvod.utils.FileUtil; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; @@ -59,7 +60,7 @@ public class User { } public User save() { - Prefers.put("aliyundrive_user", toString()); + FileUtil.write(API.get().getUserCache(), toString()); return this; } diff --git a/app/src/main/java/com/github/catvod/utils/FileUtil.java b/app/src/main/java/com/github/catvod/utils/FileUtil.java new file mode 100644 index 00000000..ed239ba5 --- /dev/null +++ b/app/src/main/java/com/github/catvod/utils/FileUtil.java @@ -0,0 +1,57 @@ +package com.github.catvod.utils; + +import com.github.catvod.spider.Init; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class FileUtil { + + public static File getCacheDir() { + return Init.context().getExternalCacheDir(); + } + + public static File getCacheFile(String fileName) { + return new File(getCacheDir(), fileName); + } + + public static void write(File file, String data) { + write(file, data.getBytes()); + } + + public static void write(File file, byte[] data) { + try { + FileOutputStream fos = new FileOutputStream(file); + fos.write(data); + fos.flush(); + fos.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String read(File file) { + try { + return read(new FileInputStream(file)); + } catch (Exception e) { + return ""; + } + } + + public static String read(InputStream is) { + try { + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + StringBuilder sb = new StringBuilder(); + String text; + while ((text = br.readLine()) != null) sb.append(text).append("\n"); + br.close(); + return Utils.substring(sb.toString()); + } catch (Exception e) { + return ""; + } + } +} diff --git a/app/src/main/java/com/github/catvod/utils/Utils.java b/app/src/main/java/com/github/catvod/utils/Utils.java index 7f088982..25a29afa 100644 --- a/app/src/main/java/com/github/catvod/utils/Utils.java +++ b/app/src/main/java/com/github/catvod/utils/Utils.java @@ -144,15 +144,6 @@ public class Utils { } } - 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()); diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 52a69e89..51c0e6a0 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 d1944f41..5160265e 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -3943d051cc917b936cbfa116baf94a74 +14916e05a5fabbc24aad217565c93f7b