diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java index 367348e63..447a2863a 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SearchActivity.java @@ -33,6 +33,7 @@ import com.github.catvod.net.OkHttp; import com.google.common.net.HttpHeaders; import java.io.IOException; +import java.net.URLEncoder; import java.util.List; import okhttp3.Call; @@ -113,7 +114,7 @@ public class SearchActivity extends BaseActivity implements WordAdapter.OnClickL private void getSuggest(String text) { mBinding.hint.setText(R.string.search_suggest); - OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + text).enqueue(new Callback() { + OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + URLEncoder.encode(text)).enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { if (mBinding.keyword.getText().toString().trim().isEmpty()) return; diff --git a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java index dc7239aec..42e4f8951 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/Decoder.java +++ b/app/src/main/java/com/fongmi/android/tv/api/Decoder.java @@ -2,6 +2,8 @@ package com.fongmi.android.tv.api; import android.util.Base64; +import androidx.media3.common.util.UriUtil; + import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.net.OkHttp; import com.github.catvod.utils.Asset; @@ -34,7 +36,8 @@ public class Decoder { private static String fix(String url, String data) { if (url.startsWith("file") || url.startsWith("assets")) url = UrlUtil.convert(url); - data = data.replace("./", url.substring(0, url.split("\\?")[0].lastIndexOf("/") + 1)); + if (data.contains("../")) data = data.replace("../", UriUtil.resolve(url, "../")); + if (data.contains("./")) data = data.replace("./", UriUtil.resolve(url, "./")); return data; } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index 8285fa172..4ed6f0585 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -47,6 +47,7 @@ import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexboxLayoutManager; import java.io.IOException; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; @@ -210,7 +211,7 @@ public class CollectActivity extends BaseActivity implements CustomScroller.Call private void getSuggest(String text) { mBinding.word.setText(R.string.search_suggest); - OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + text).enqueue(new Callback() { + OkHttp.newCall("https://suggest.video.iqiyi.com/?if=mobile&key=" + URLEncoder.encode(text)).enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { if (mBinding.keyword.getText().toString().trim().isEmpty()) return;