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