Support clan://

pull/102/head
FongMi 3 years ago
parent eabef063d8
commit 955ac4e99c
  1. 13
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  2. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/ConfigDialog.java
  3. 4
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.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();

@ -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);
}
}

@ -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);
}

@ -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);

Loading…
Cancel
Save