diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java index fcd8ba481..241408072 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java @@ -71,6 +71,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownVod.Liste activity.startActivity(new Intent(activity, CastActivity.class)); } + @Override + protected boolean customWall() { + return false; + } + @Override protected ViewBinding getBinding() { return mBinding = ActivityCastBinding.inflate(getLayoutInflater()); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 579246d39..32eafae50 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -296,7 +296,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } private void setLogo() { - Glide.with(App.get()).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).listener(getListener()).into(mBinding.logo); + Glide.with(mBinding.logo).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).listener(getListener()).into(mBinding.logo); } private RequestListener getListener() { diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index 0e30b3379..a06c507dc 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -19,7 +19,6 @@ import androidx.media3.common.Player; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; @@ -39,6 +38,7 @@ import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.impl.Callback; +import com.fongmi.android.tv.impl.CustomTarget; import com.fongmi.android.tv.impl.LiveCallback; import com.fongmi.android.tv.impl.PassCallback; import com.fongmi.android.tv.model.LiveViewModel; @@ -513,10 +513,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { mBinding.exo.setDefaultArtwork(resource); } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - } }); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index c796a3d76..8d599f24d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -30,7 +30,6 @@ import androidx.media3.common.Player; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; @@ -54,6 +53,7 @@ import com.fongmi.android.tv.event.ActionEvent; import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.event.RefreshEvent; +import com.fongmi.android.tv.impl.CustomTarget; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.player.exo.ExoUtil; @@ -920,10 +920,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.exo.setDefaultArtwork(resource); setMetadata(); } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - } }); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java index 96dcc973a..044ac07cb 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -1,12 +1,16 @@ package com.fongmi.android.tv.ui.base; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.widget.ImageView.ScaleType.CENTER_CROP; + import android.app.Activity; import android.content.res.Configuration; import android.content.res.Resources; -import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; @@ -17,24 +21,20 @@ import androidx.leanback.widget.ArrayObjectAdapter; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.api.config.WallConfig; import com.fongmi.android.tv.event.RefreshEvent; -import com.fongmi.android.tv.utils.FileUtil; -import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Util; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import java.io.File; - import me.jessyan.autosize.AutoSizeCompat; public abstract class BaseActivity extends AppCompatActivity { private OnBackInvokedCallback callback; + private ImageView wall; protected abstract ViewBinding getBinding(); @@ -52,7 +52,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Override public void setContentView(View view) { super.setContentView(view); - refreshWall(); + if (customWall()) addWallView(); } protected Activity getActivity() { @@ -94,15 +94,11 @@ public abstract class BaseActivity extends AppCompatActivity { } } - private void refreshWall() { - try { - if (!customWall()) return; - File file = FileUtil.getWall(Setting.getWall()); - if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getAbsolutePath())); - else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName())); - } catch (Exception e) { - getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1); - } + private void addWallView() { + wall = new ImageView(this); + wall.setScaleType(CENTER_CROP); + ((ViewGroup) findViewById(android.R.id.content)).addView(wall, 0, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); + WallConfig.refresh(wall); } private Resources hackResources(Resources resources) { @@ -116,7 +112,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { - if (event.getType() == RefreshEvent.Type.WALL) refreshWall(); + if (event.getType() == RefreshEvent.Type.WALL && customWall()) WallConfig.refresh(wall); } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java b/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java index 48dd4b57d..0b50a988a 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java +++ b/app/src/main/java/com/fongmi/android/tv/api/EpgParser.java @@ -41,7 +41,7 @@ public class EpgParser { } private static boolean shouldDownload(File file) { - return !file.exists() || !isToday(file.lastModified()) || System.currentTimeMillis() - file.lastModified() > TimeUnit.HOURS.toMillis(6); + return !Path.exists(file) || !isToday(file.lastModified()) || System.currentTimeMillis() - file.lastModified() > TimeUnit.HOURS.toMillis(6); } private static boolean isToday(long millis) { diff --git a/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java index 0a39ca287..445a3a056 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java @@ -1,10 +1,8 @@ package com.fongmi.android.tv.api.config; -import android.graphics.Bitmap; import android.text.TextUtils; +import android.widget.ImageView; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; @@ -12,6 +10,7 @@ import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.impl.Callback; import com.fongmi.android.tv.utils.FileUtil; +import com.fongmi.android.tv.utils.ImgUtil; import com.fongmi.android.tv.utils.Notify; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.UrlUtil; @@ -19,7 +18,6 @@ import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Path; import java.io.File; -import java.io.FileOutputStream; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -79,7 +77,7 @@ public class WallConfig { private void loadConfig(Callback callback) { try { File file = write(FileUtil.getWall(0)); - if (file.exists() && file.length() > 0) refresh(0); + if (Path.exists(file)) refresh(0); else config(Config.find(VodConfig.get().getWall(), 2)); App.post(callback::success); config.update(); @@ -90,12 +88,9 @@ public class WallConfig { } } - private File write(File file) throws Exception { + private File write(File file) { if (TextUtils.isEmpty(getUrl())) return file; Path.write(file, OkHttp.bytes(UrlUtil.convert(getUrl()))); - Bitmap bitmap = Glide.with(App.get()).asBitmap().load(file).centerCrop().override(ResUtil.getScreenWidth(), ResUtil.getScreenHeight()).diskCacheStrategy(DiskCacheStrategy.NONE).submit().get(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file)); - bitmap.recycle(); return file; } @@ -107,4 +102,14 @@ public class WallConfig { Setting.putWall(index); RefreshEvent.wall(); } + + public static void refresh(ImageView view) { + try { + File file = FileUtil.getWall(Setting.getWall()); + if (Path.exists(file)) ImgUtil.load(file, view); + else view.setImageResource(ResUtil.getDrawable(file.getName())); + } catch (Exception e) { + view.setImageResource(R.drawable.wallpaper_1); + } + } } diff --git a/app/src/main/java/com/fongmi/android/tv/impl/CustomTarget.java b/app/src/main/java/com/fongmi/android/tv/impl/CustomTarget.java new file mode 100644 index 000000000..ea4ec92e9 --- /dev/null +++ b/app/src/main/java/com/fongmi/android/tv/impl/CustomTarget.java @@ -0,0 +1,27 @@ +package com.fongmi.android.tv.impl; + +import android.graphics.drawable.Drawable; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.bumptech.glide.request.transition.Transition; + +public class CustomTarget extends com.bumptech.glide.request.target.CustomTarget { + + public CustomTarget() { + super(); + } + + public CustomTarget(int width, int height) { + super(width, height); + } + + @Override + public void onResourceReady(@NonNull T resource, @Nullable Transition transition) { + } + + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { + } +} diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java index a05a57087..e6d04fb05 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java @@ -3,7 +3,6 @@ package com.fongmi.android.tv.utils; import static android.widget.ImageView.ScaleType.CENTER_CROP; import static android.widget.ImageView.ScaleType.FIT_CENTER; -import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.view.View; @@ -14,16 +13,19 @@ import androidx.annotation.Nullable; import com.bumptech.glide.Glide; import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.model.GlideUrl; import com.bumptech.glide.load.model.LazyHeaders; import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.impl.CustomTarget; import com.github.catvod.utils.Json; import com.google.common.net.HttpHeaders; +import java.io.File; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -35,7 +37,7 @@ public class ImgUtil { private static final Set failed = new HashSet<>(); public static void load(String url, CustomTarget target) { - Glide.with(App.get()).asDrawable().load(getUrl(url)).into(target); + Glide.with(App.get()).load(getUrl(url)).into(target); } public static void load(String text, String url, ImageView view) { @@ -45,7 +47,16 @@ public class ImgUtil { public static void load(String text, String url, ImageView view, boolean vod) { if (!vod) view.setVisibility(TextUtils.isEmpty(url) ? View.GONE : View.VISIBLE); if (TextUtils.isEmpty(url) || failed.contains(url)) view.setImageDrawable(getTextDrawable(text, vod)); - else view.post(() -> Glide.with(App.get()).asBitmap().load(getUrl(url)).override(view.getWidth(), view.getHeight()).listener(getListener(text, url, view, vod)).into(view)); + else view.post(() -> Glide.with(view).load(getUrl(url)).override(view.getWidth(), view.getHeight()).dontAnimate().listener(getListener(text, url, view, vod)).into(view)); + } + + public static void load(File file, ImageView view) { + Glide.with(view).load(file).dontAnimate().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(new CustomTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { + view.setImageDrawable(resource); + } + }); } public static Object getUrl(String url) { @@ -73,17 +84,17 @@ public class ImgUtil { return builder.buildRoundRect(text, ColorGenerator.get400(text), ResUtil.dp2px(4)); } - private static RequestListener getListener(String text, String url, ImageView view, boolean vod) { + private static RequestListener getListener(String text, String url, ImageView view, boolean vod) { return new RequestListener<>() { @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target target, boolean isFirstResource) { + public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target target, boolean isFirstResource) { view.setImageDrawable(getTextDrawable(text, vod)); failed.add(url); return true; } @Override - public boolean onResourceReady(@NonNull Bitmap resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { + public boolean onResourceReady(@NonNull Drawable resource, @NonNull Object model, Target target, @NonNull DataSource dataSource, boolean isFirstResource) { view.setScaleType(vod ? CENTER_CROP : FIT_CENTER); return false; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index de2839ddc..f3a949ccb 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -18,7 +18,6 @@ import androidx.media3.common.C; import androidx.media3.common.Player; import androidx.viewbinding.ViewBinding; -import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; @@ -39,6 +38,7 @@ import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.impl.Callback; +import com.fongmi.android.tv.impl.CustomTarget; import com.fongmi.android.tv.impl.LiveCallback; import com.fongmi.android.tv.impl.PassCallback; import com.fongmi.android.tv.model.LiveViewModel; @@ -529,10 +529,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { mBinding.exo.setDefaultArtwork(resource); } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - } }); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 5e47b9c45..4f921a999 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -33,7 +33,6 @@ import androidx.media3.common.Player; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Constant; @@ -59,6 +58,7 @@ import com.fongmi.android.tv.event.CastEvent; import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.event.RefreshEvent; +import com.fongmi.android.tv.impl.CustomTarget; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.player.exo.ExoUtil; @@ -989,10 +989,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.exo.setDefaultArtwork(resource); setMetadata(); } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - } }); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java index ab56140a3..466b8c8e7 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -1,14 +1,17 @@ package com.fongmi.android.tv.ui.base; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.widget.ImageView.ScaleType.CENTER_CROP; + import android.app.Activity; import android.graphics.Color; -import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.view.DisplayCutout; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; +import android.widget.ImageView; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; @@ -16,21 +19,18 @@ import androidx.activity.OnBackPressedCallback; import androidx.appcompat.app.AppCompatActivity; import androidx.viewbinding.ViewBinding; -import com.fongmi.android.tv.R; -import com.fongmi.android.tv.Setting; +import com.fongmi.android.tv.api.config.WallConfig; import com.fongmi.android.tv.event.RefreshEvent; -import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.ResUtil; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; -import java.io.File; - public abstract class BaseActivity extends AppCompatActivity { private OnBackInvokedCallback callback; + private ImageView wall; protected abstract ViewBinding getBinding(); @@ -48,7 +48,7 @@ public abstract class BaseActivity extends AppCompatActivity { @Override public void setContentView(View view) { super.setContentView(view); - refreshWall(); + if (customWall()) addWallView(); } protected Activity getActivity() { @@ -117,20 +117,16 @@ public abstract class BaseActivity extends AppCompatActivity { activity.getWindow().setStatusBarColor(Color.TRANSPARENT); } - private void refreshWall() { - try { - if (!customWall()) return; - File file = FileUtil.getWall(Setting.getWall()); - if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getAbsolutePath())); - else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName())); - } catch (Exception e) { - getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1); - } + private void addWallView() { + wall = new ImageView(this); + wall.setScaleType(CENTER_CROP); + ((ViewGroup) findViewById(android.R.id.content)).addView(wall, 0, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); + WallConfig.refresh(wall); } @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshEvent(RefreshEvent event) { - if (event.getType() == RefreshEvent.Type.WALL) refreshWall(); + if (event.getType() == RefreshEvent.Type.WALL && customWall()) WallConfig.refresh(wall); } protected void onBackInvoked() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index bbfdb8b77..fedaf1b69 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -220,7 +220,7 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal } private void setLogo() { - Glide.with(App.get()).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).error(R.drawable.ic_logo).listener(getListener()).into(mBinding.logo); + Glide.with(mBinding.logo).load(UrlUtil.convert(VodConfig.get().getConfig().getLogo())).circleCrop().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).error(R.drawable.ic_logo).listener(getListener()).into(mBinding.logo); } private RequestListener getListener() { diff --git a/catvod/src/main/java/com/github/catvod/utils/Path.java b/catvod/src/main/java/com/github/catvod/utils/Path.java index e644ac024..6223e4c9b 100644 --- a/catvod/src/main/java/com/github/catvod/utils/Path.java +++ b/catvod/src/main/java/com/github/catvod/utils/Path.java @@ -28,6 +28,10 @@ public class Path { return new File(path.replace("file://", "")).exists(); } + public static boolean exists(File file) { + return file != null && file.exists() && file.length() > 0; + } + public static File root() { return Environment.getExternalStorageDirectory(); } diff --git a/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java b/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java index a79019994..135a8cac6 100644 --- a/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java +++ b/quickjs/src/main/java/com/fongmi/quickjs/utils/Module.java @@ -51,7 +51,7 @@ public class Module { try { Uri uri = Uri.parse(url); File file = Path.js(uri.getLastPathSegment()); - return file.exists() ? Path.read(file) : ""; + return Path.exists(file) ? Path.read(file) : ""; } catch (Exception e) { return ""; }