Support use proxy to update apk

pull/102/head
FongMi 3 years ago
parent ab7bc86431
commit 42ca19a4a3
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 21
      app/src/main/java/com/fongmi/android/tv/utils/FileUtil.java
  3. 36
      app/src/main/java/com/fongmi/android/tv/utils/Updater.java

@ -37,9 +37,9 @@ import com.fongmi.android.tv.ui.presenter.ProgressPresenter;
import com.fongmi.android.tv.ui.presenter.TitlePresenter;
import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Updater;
import com.google.common.collect.Lists;
import org.greenrobot.eventbus.EventBus;
@ -62,6 +62,7 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
public static void start(Activity activity) {
activity.startActivity(new Intent(activity, HomeActivity.class));
activity.finish();
Updater.check();
}
@Override
@ -71,7 +72,6 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
@Override
protected void initView() {
new Thread(FileUtil::checkUpdate).start();
Clock.start(mBinding.time);
Server.get().start();
Players.get().init();

@ -10,10 +10,6 @@ import android.util.Log;
import androidx.core.content.FileProvider;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.net.OKHttp;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.File;
@ -46,10 +42,6 @@ public class FileUtil {
return getCacheFile("spider.jar");
}
public static File getApk() {
return getCacheFile("update.apk");
}
public static File getLocal(String path) {
return new File(path.replace("file:/", getRootPath()));
}
@ -90,18 +82,7 @@ public class FileUtil {
if (dir.delete()) Log.d(TAG, "Deleted:" + dir.getPath());
}
public static void checkUpdate() {
try {
String json = OKHttp.newCall("https://github.com/FongMi/TV/raw/main/release/leanback.json").execute().body().string();
JSONObject object = new JSONObject(json);
if (object.optInt("version") <= BuildConfig.VERSION_CODE) clearDir(getCacheDir());
else open(write(getApk(), OKHttp.newCall(object.optString("url")).execute().body().bytes()));
} catch (Exception e) {
e.printStackTrace();
}
}
private static void open(File file) {
public static void openFile(File file) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

@ -0,0 +1,36 @@
package com.fongmi.android.tv.utils;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.net.OKHttp;
import org.json.JSONObject;
import java.io.File;
public class Updater {
private static final String URL = "https://github.com/FongMi/TV/raw/main/release/leanback.json";
private static final String PROXY = "https://ghproxy.com/";
public static void check() {
new Thread(() -> new Updater().connect(URL, 0)).start();
}
private File getApk() {
return FileUtil.getCacheFile("update.apk");
}
private void connect(String target, int retry) {
try {
JSONObject object = new JSONObject(OKHttp.newCall(target).execute().body().string());
int version = object.optInt("version");
String url = object.optString("url");
if (retry > 0) url = PROXY + url;
if (version <= BuildConfig.VERSION_CODE) FileUtil.clearDir(getApk());
else FileUtil.openFile(FileUtil.write(getApk(), OKHttp.newCall(url).execute().body().bytes()));
} catch (Exception e) {
if (retry == 0) connect(PROXY + target, 1);
e.printStackTrace();
}
}
}
Loading…
Cancel
Save