diff --git a/app/src/leanback/AndroidManifest.xml b/app/src/leanback/AndroidManifest.xml
index d684107c2..1e30263fd 100644
--- a/app/src/leanback/AndroidManifest.xml
+++ b/app/src/leanback/AndroidManifest.xml
@@ -136,7 +136,7 @@
android:screenOrientation="sensorLandscape" />
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PickerActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/FileActivity.java
similarity index 79%
rename from app/src/leanback/java/com/fongmi/android/tv/ui/activity/PickerActivity.java
rename to app/src/leanback/java/com/fongmi/android/tv/ui/activity/FileActivity.java
index 9d5ae7163..c2098e9c3 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/PickerActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/FileActivity.java
@@ -7,17 +7,17 @@ import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.ItemBridgeAdapter;
import androidx.viewbinding.ViewBinding;
-import com.fongmi.android.tv.databinding.ActivityPickerBinding;
+import com.fongmi.android.tv.databinding.ActivityFileBinding;
import com.fongmi.android.tv.ui.base.BaseActivity;
-import com.fongmi.android.tv.ui.presenter.PickPresenter;
+import com.fongmi.android.tv.ui.presenter.FilePresenter;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.utils.Path;
import java.io.File;
-public class PickerActivity extends BaseActivity implements PickPresenter.OnClickListener {
+public class FileActivity extends BaseActivity implements FilePresenter.OnClickListener {
- private ActivityPickerBinding mBinding;
+ private ActivityFileBinding mBinding;
private ArrayObjectAdapter mAdapter;
private File dir;
@@ -27,7 +27,7 @@ public class PickerActivity extends BaseActivity implements PickPresenter.OnClic
@Override
protected ViewBinding getBinding() {
- return mBinding = ActivityPickerBinding.inflate(getLayoutInflater());
+ return mBinding = ActivityFileBinding.inflate(getLayoutInflater());
}
@Override
@@ -39,7 +39,7 @@ public class PickerActivity extends BaseActivity implements PickPresenter.OnClic
private void setRecyclerView() {
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.setVerticalSpacing(ResUtil.dp2px(16));
- mBinding.recycler.setAdapter(new ItemBridgeAdapter(mAdapter = new ArrayObjectAdapter(new PickPresenter(this))));
+ mBinding.recycler.setAdapter(new ItemBridgeAdapter(mAdapter = new ArrayObjectAdapter(new FilePresenter(this))));
}
private void update(File dir) {
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 9b0aed023..cb41f6886 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
@@ -35,17 +35,21 @@ import com.fongmi.android.tv.ui.dialog.LiveDialog;
import com.fongmi.android.tv.ui.dialog.ProxyDialog;
import com.fongmi.android.tv.ui.dialog.RestoreDialog;
import com.fongmi.android.tv.ui.dialog.SiteDialog;
+import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;
+import com.github.catvod.utils.Path;
import com.permissionx.guolindev.PermissionX;
import java.util.ArrayList;
import java.util.List;
+import javax.annotation.Nullable;
+
public class SettingActivity extends BaseActivity implements ConfigCallback, SiteCallback, LiveCallback, DohCallback, ProxyCallback {
private ActivitySettingBinding mBinding;
@@ -387,4 +391,11 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
LiveConfig.get().init().load();
VodConfig.get().init().load(getCallback(0));
}
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (resultCode != Activity.RESULT_OK || requestCode != FileChooser.REQUEST_PICK_FILE) return;
+ setConfig(Config.find("file:/" + FileChooser.getPathFromUri(this, data.getData()).replace(Path.rootPath(), ""), type));
+ }
}
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java
index b2b2c5b5c..fb45da273 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/ConfigDialog.java
@@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.dialog;
-import android.Manifest;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.view.LayoutInflater;
@@ -21,10 +20,10 @@ import com.fongmi.android.tv.event.ServerEvent;
import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.server.Server;
import com.fongmi.android.tv.ui.custom.CustomTextListener;
+import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.QRCode;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -84,12 +83,11 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
binding.positive.setText(edit ? R.string.dialog_edit : R.string.dialog_positive);
binding.code.setImageBitmap(QRCode.getBitmap(Server.get().getAddress(3), 200, 0));
binding.info.setText(ResUtil.getString(R.string.push_info, Server.get().getAddress()).replace(",", "\n"));
- binding.storage.setVisibility(PermissionX.isGranted(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) ? View.GONE : View.VISIBLE);
}
private void initEvent() {
EventBus.getDefault().register(this);
- binding.storage.setOnClickListener(this::onStorage);
+ binding.choose.setOnClickListener(this::onChoose);
binding.positive.setOnClickListener(this::onPositive);
binding.negative.setOnClickListener(this::onNegative);
binding.text.addTextChangedListener(new CustomTextListener() {
@@ -117,8 +115,9 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
}
}
- private void onStorage(View view) {
- PermissionX.init(activity).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> binding.storage.setVisibility(allGranted ? View.GONE : View.VISIBLE));
+ private void onChoose(View view) {
+ FileChooser.from(activity).show();
+ dialog.dismiss();
}
private void detect(String s) {
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/PickPresenter.java b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FilePresenter.java
similarity index 71%
rename from app/src/leanback/java/com/fongmi/android/tv/ui/presenter/PickPresenter.java
rename to app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FilePresenter.java
index 1fab74ca2..19f90d664 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/PickPresenter.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/presenter/FilePresenter.java
@@ -7,15 +7,15 @@ import androidx.annotation.NonNull;
import androidx.leanback.widget.Presenter;
import com.fongmi.android.tv.R;
-import com.fongmi.android.tv.databinding.AdapterPickerBinding;
+import com.fongmi.android.tv.databinding.AdapterFileBinding;
import java.io.File;
-public class PickPresenter extends Presenter {
+public class FilePresenter extends Presenter {
private final OnClickListener mListener;
- public PickPresenter(OnClickListener listener) {
+ public FilePresenter(OnClickListener listener) {
this.mListener = listener;
}
@@ -26,7 +26,7 @@ public class PickPresenter extends Presenter {
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
- return new ViewHolder(AdapterPickerBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
+ return new ViewHolder(AdapterFileBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
@@ -35,7 +35,7 @@ public class PickPresenter extends Presenter {
ViewHolder holder = (ViewHolder) viewHolder;
holder.binding.name.setText(file.getName());
holder.binding.getRoot().setOnClickListener(v -> mListener.onItemClick(file));
- holder.binding.image.setImageResource(file.isDirectory() ? R.drawable.ic_picker_folder : R.drawable.ic_picker_file);
+ holder.binding.image.setImageResource(file.isDirectory() ? R.drawable.ic_file_folder : R.drawable.ic_file_file);
}
@Override
@@ -44,9 +44,9 @@ public class PickPresenter extends Presenter {
public static class ViewHolder extends Presenter.ViewHolder {
- private final AdapterPickerBinding binding;
+ private final AdapterFileBinding binding;
- public ViewHolder(@NonNull AdapterPickerBinding binding) {
+ public ViewHolder(@NonNull AdapterFileBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
diff --git a/app/src/leanback/res/drawable/ic_picker_file.xml b/app/src/leanback/res/drawable/ic_file_file.xml
similarity index 100%
rename from app/src/leanback/res/drawable/ic_picker_file.xml
rename to app/src/leanback/res/drawable/ic_file_file.xml
diff --git a/app/src/leanback/res/drawable/ic_picker_folder.xml b/app/src/leanback/res/drawable/ic_file_folder.xml
similarity index 100%
rename from app/src/leanback/res/drawable/ic_picker_folder.xml
rename to app/src/leanback/res/drawable/ic_file_folder.xml
diff --git a/app/src/main/res/layout/activity_picker.xml b/app/src/leanback/res/layout/activity_file.xml
similarity index 100%
rename from app/src/main/res/layout/activity_picker.xml
rename to app/src/leanback/res/layout/activity_file.xml
diff --git a/app/src/leanback/res/layout/adapter_picker.xml b/app/src/leanback/res/layout/adapter_file.xml
similarity index 94%
rename from app/src/leanback/res/layout/adapter_picker.xml
rename to app/src/leanback/res/layout/adapter_file.xml
index d26575a08..05c9b0d70 100644
--- a/app/src/leanback/res/layout/adapter_picker.xml
+++ b/app/src/leanback/res/layout/adapter_file.xml
@@ -20,7 +20,7 @@
android:layout_height="48dp"
android:layout_margin="16dp"
android:scaleType="fitCenter"
- tools:src="@drawable/ic_picker_folder" />
+ tools:src="@drawable/ic_file_folder" />
diff --git a/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java b/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java
index ed3f80ca8..ad2b0da26 100644
--- a/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java
+++ b/app/src/main/java/com/fongmi/android/tv/utils/FileChooser.java
@@ -15,7 +15,7 @@ import android.provider.MediaStore;
import androidx.fragment.app.Fragment;
import com.fongmi.android.tv.App;
-import com.fongmi.android.tv.ui.activity.PickerActivity;
+import com.fongmi.android.tv.ui.activity.FileActivity;
import com.github.catvod.utils.Path;
import java.io.File;
@@ -68,8 +68,8 @@ public class FileChooser {
if (activity != null) activity.startActivityForResult(Intent.createChooser(intent, ""), code);
if (fragment != null) fragment.startActivityForResult(Intent.createChooser(intent, ""), code);
} else {
- if (activity != null) activity.startActivityForResult(new Intent(activity, PickerActivity.class), code);
- if (fragment != null) fragment.startActivityForResult(new Intent(fragment.getActivity(), PickerActivity.class), code);
+ if (activity != null) activity.startActivityForResult(new Intent(activity, FileActivity.class), code);
+ if (fragment != null) fragment.startActivityForResult(new Intent(fragment.getActivity(), FileActivity.class), code);
}
}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 9355c55c5..4b4e5a5cb 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -75,7 +75,7 @@
备份
恢复
版本
- 权限
+ 选择
关
开
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 57cccc41a..85734e822 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -75,7 +75,7 @@
備份
還原
版本
- 權限
+ 選擇
關
開
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 227447045..4654898b3 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -76,7 +76,7 @@
Backup
Restore
Version
- Permission
+ Choose
Off
On