diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index f24403608..37f42e74d 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -64,17 +64,18 @@ public class SettingActivity extends BaseActivity implements ConfigDialog.Callba } @Override - public void setConfig() { - mBinding.url.setText(Prefers.getUrl()); + public void setConfig(String url) { + mBinding.url.setText(url); Notify.progress(this); AppDatabase.clear(); - checkUrl(); + Prefers.putUrl(url); + checkUrl(url); } - private void checkUrl() { - if (Prefers.getUrl().startsWith("file://") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) { + private void checkUrl(String url) { + if (url.startsWith("file://") && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) { launcherIntent.launch(new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)); - } else if (Prefers.getUrl().startsWith("file://") && Build.VERSION.SDK_INT < Build.VERSION_CODES.R && ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + } else if (url.startsWith("file://") && Build.VERSION.SDK_INT < Build.VERSION_CODES.R && ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { launcherString.launch(Manifest.permission.READ_EXTERNAL_STORAGE); } else { loadConfig(); diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java index a7516737a..b299852bb 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java @@ -68,8 +68,9 @@ public class ConfigDialog implements DialogInterface.OnDismissListener { } private void onPositive(View view) { - Prefers.putUrl(binding.text.getText().toString().trim()); - callback.setConfig(); + String url = binding.text.getText().toString().trim(); + if (url.startsWith("clan")) url = url.replace("clan", "file"); + callback.setConfig(url); dialog.dismiss(); } @@ -95,6 +96,6 @@ public class ConfigDialog implements DialogInterface.OnDismissListener { public interface Callback { - void setConfig(); + void setConfig(String url); } } 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 640f7875c..c3d8f7a0a 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 @@ -82,6 +82,7 @@ public class ApiConfig { JsonReader reader = new JsonReader(new FileReader(FileUtil.getLocal(url))); parseConfig(new Gson().fromJson(reader, JsonObject.class), callback); } catch (Exception e) { + e.printStackTrace(); handler.post(() -> callback.error(R.string.error_config_get)); } } @@ -90,6 +91,7 @@ public class ApiConfig { try { parseConfig(new Gson().fromJson(OKHttp.newCall(url).execute().body().string(), JsonObject.class), callback); } catch (Exception e) { + e.printStackTrace(); handler.post(() -> callback.error(R.string.error_config_get)); } } @@ -139,9 +141,11 @@ public class ApiConfig { private String convert(String text) { if (TextUtils.isEmpty(text)) return ""; + if (text.startsWith("clan")) return text.replace("clan", "file"); if (text.startsWith(".")) text = text.substring(1); if (text.startsWith("/")) text = text.substring(1); Uri uri = Uri.parse(Prefers.getUrl()); + if (uri.getLastPathSegment() == null) return uri.getScheme() + "://" + text; return uri.toString().replace(uri.getLastPathSegment(), text); } diff --git a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java index 144473bfe..5ed888051 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java @@ -27,7 +27,7 @@ public class ExoUtil { DataSource.Factory factory = getFactory(headers, url); MediaItem mediaItem = new MediaItem.Builder().setUri(videoUri).build(); int type = Util.inferContentType(videoUri); - if (type == C.CONTENT_TYPE_HLS || url.contains(".php") || url.contains("m3u8")) { + if (type == C.CONTENT_TYPE_HLS || url.contains("php") || url.contains("m3u8")) { return new HlsMediaSource.Factory(factory).createMediaSource(mediaItem); } else if (type == C.CONTENT_TYPE_DASH) { return new DashMediaSource.Factory(factory).createMediaSource(mediaItem);