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 464d26126..36d7bf992 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
@@ -131,7 +131,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
int index = getRecommendIndex();
mViewModel.getResult().setValue(Result.empty());
if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index);
- if (ApiConfig.get().getHome().getName().isEmpty()) mBinding.title.setText(R.string.app_name);
+ if (ApiConfig.getHomeName().isEmpty()) mBinding.title.setText(R.string.app_name);
else mBinding.title.setText(ApiConfig.getHomeName());
if (ApiConfig.get().getHome().getKey().isEmpty()) return;
mViewModel.homeContent();
diff --git a/app/src/leanback/res/layout/activity_setting.xml b/app/src/leanback/res/layout/activity_setting.xml
index a202ab8c1..5ed3b3f66 100644
--- a/app/src/leanback/res/layout/activity_setting.xml
+++ b/app/src/leanback/res/layout/activity_setting.xml
@@ -26,6 +26,7 @@
@@ -34,6 +35,7 @@
android:id="@+id/vodUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:ellipsize="middle"
android:gravity="end"
android:singleLine="true"
android:textColor="@color/white"
@@ -88,6 +90,7 @@
@@ -96,6 +99,7 @@
android:id="@+id/liveUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:ellipsize="middle"
android:gravity="end"
android:singleLine="true"
android:textColor="@color/white"
@@ -151,6 +155,7 @@
@@ -159,6 +164,7 @@
android:id="@+id/wallUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:ellipsize="middle"
android:gravity="end"
android:singleLine="true"
android:textColor="@color/white"
diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
index 7f359dd25..e5ca0c3d0 100644
--- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
+++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
@@ -73,6 +73,8 @@ public class ApiConfig {
}
public ApiConfig init() {
+ this.home = null;
+ this.wall = null;
this.config = Config.vod();
this.ads = new ArrayList<>();
this.sites = new ArrayList<>();
@@ -168,6 +170,7 @@ public class ApiConfig {
if (ext.startsWith("http")) return ext;
else if (ext.startsWith("file")) return FileUtil.read(ext);
else if (ext.startsWith("img+")) return Decoder.getExt(ext);
+ else if (ext.contains("http") || ext.contains("file")) return ext;
else if (ext.endsWith(".json") || ext.endsWith(".py")) return parseExt(Utils.convert(ext));
return ext;
}
@@ -223,7 +226,7 @@ public class ApiConfig {
}
public Config getConfig() {
- return config;
+ return config == null ? Config.vod() : config;
}
public Parse getParse() {
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 e027493a8..de27a4459 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
@@ -9,6 +9,8 @@ import com.google.common.io.BaseEncoding;
import java.io.File;
import java.nio.charset.StandardCharsets;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
@@ -40,8 +42,8 @@ public class Decoder {
try {
File file = FileUtil.getJar(jar);
if (md5.length() > 0 && FileUtil.equals(jar, md5)) return file;
- String data = getData(jar.substring(4));
- data = data.substring(data.indexOf("**") + 2);
+ String data = extract(getData(jar.substring(4)));
+ if (data.isEmpty()) return FileUtil.getJar(jar);
return FileUtil.write(file, Base64.decode(data, Base64.DEFAULT));
} catch (Exception ignored) {
return FileUtil.getJar(jar);
@@ -79,7 +81,14 @@ public class Decoder {
}
private static String base64(String data) {
- return new String(Base64.decode(data.substring(data.indexOf("**") + 2), Base64.DEFAULT));
+ String extract = extract(data);
+ if (extract.isEmpty()) return data;
+ return new String(Base64.decode(extract, Base64.DEFAULT));
+ }
+
+ private static String extract(String data) {
+ Matcher matcher = Pattern.compile("[A-Za-z0-9]{8}\\*\\*").matcher(data);
+ return matcher.find() ? data.substring(data.indexOf(matcher.group()) + 10) : "";
}
private static byte[] padEnd(String key) {
diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java
index 4402ca0b5..010c26643 100644
--- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java
+++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java
@@ -49,6 +49,7 @@ public class LiveConfig {
}
public LiveConfig init() {
+ this.home = null;
this.config = Config.live();
this.lives = new ArrayList<>();
this.handler = new Handler(Looper.getMainLooper());
@@ -61,6 +62,7 @@ public class LiveConfig {
}
public LiveConfig clear() {
+ this.home = null;
this.lives.clear();
this.lives.addAll(ApiConfig.get().getLives());
return this;
@@ -174,7 +176,7 @@ public class LiveConfig {
}
public Config getConfig() {
- return config;
+ return config == null ? Config.live() : config;
}
public Live getHome() {
diff --git a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java
index 56c32be5a..e6caf119c 100644
--- a/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java
+++ b/app/src/main/java/com/fongmi/android/tv/net/OKHttp.java
@@ -29,7 +29,7 @@ public class OKHttp {
}
private OkHttpClient.Builder getBuilder() {
- return new OkHttpClient.Builder().readTimeout(15, TimeUnit.SECONDS).writeTimeout(15, TimeUnit.SECONDS).connectTimeout(5, TimeUnit.SECONDS).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert);
+ return new OkHttpClient.Builder().callTimeout(10, TimeUnit.SECONDS).readTimeout(10, TimeUnit.SECONDS).writeTimeout(10, TimeUnit.SECONDS).connectTimeout(10, TimeUnit.SECONDS).sslSocketFactory(new SSLSocketFactoryCompat(), SSLSocketFactoryCompat.trustAllCert);
}
private OkHttpClient client() {
diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java
index 8d473e85a..c4bae6ef2 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/Players.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java
@@ -192,8 +192,8 @@ public class Players implements Player.Listener, ParseTask.Callback {
@Override
public void onPlayerError(@NonNull PlaybackException error) {
- setErrorCode(error.errorCode);
PlayerEvent.error(R.string.error_play_format, true);
+ setErrorCode(error.errorCode);
}
@Override
diff --git a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java
index 981185108..76072ecac 100644
--- a/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java
+++ b/app/src/main/java/com/fongmi/android/tv/ui/activity/BaseActivity.java
@@ -10,6 +10,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewbinding.ViewBinding;
+import com.fongmi.android.tv.R;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Prefers;
@@ -52,7 +53,8 @@ public abstract class BaseActivity extends AppCompatActivity {
private void setWall() {
File file = FileUtil.getWall(Prefers.getWall());
if (file.exists() && file.length() > 0) getWindow().setBackgroundDrawable(Drawable.createFromPath(file.getPath()));
- else getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName()));
+ else if (Prefers.getWall() > 0) getWindow().setBackgroundDrawableResource(ResUtil.getDrawable(file.getName()));
+ else getWindow().setBackgroundDrawableResource(R.drawable.wallpaper_1);
}
private void hackResources() {