Clean permission

pull/594/head
jhengazuki 6 months ago
parent 1e55f2ff6a
commit 6f78ec2f45
  1. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/FileActivity.java
  2. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 11
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  4. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  5. 19
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomMic.java
  6. 31
      app/src/main/java/com/fongmi/android/tv/impl/ChainTask.java
  7. 52
      app/src/main/java/com/fongmi/android/tv/impl/PermissionCallback.java
  8. 33
      app/src/main/java/com/fongmi/android/tv/utils/PermissionUtil.java
  9. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/FileActivity.java
  10. 12
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  11. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  12. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
@ -11,9 +10,9 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.databinding.ActivityFileBinding;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.presenter.FilePresenter;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.utils.Path;
import com.permissionx.guolindev.PermissionX;
import java.io.File;
@ -38,16 +37,16 @@ public class FileActivity extends BaseActivity implements FilePresenter.OnClickL
checkPermission();
}
private void checkPermission() {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> update(Path.root()));
}
private void setRecyclerView() {
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.setVerticalSpacing(ResUtil.dp2px(16));
mBinding.recycler.setAdapter(new ItemBridgeAdapter(mAdapter = new ArrayObjectAdapter(new FilePresenter(this))));
}
private void checkPermission() {
PermissionUtil.requestFile(this, allGranted -> update(Path.root()));
}
private void update(File dir) {
mBinding.recycler.setSelectedPosition(0);
mAdapter.setItems(Path.list(this.dir = dir), null);

@ -21,7 +21,6 @@ import com.bumptech.glide.request.target.Target;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
@ -40,7 +39,6 @@ import com.fongmi.android.tv.event.CastEvent;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.event.ServerEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.ChainTask;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.server.Server;
@ -59,11 +57,11 @@ import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.KeyUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import com.google.common.collect.Lists;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -107,9 +105,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
mClock = Clock.create(mBinding.clock).format("HH:mm:ss");
mBinding.progressLayout.showProgress();
Updater.create().release().start(this);
PermissionUtil.requestNotify(this);
mResult = Result.empty();
Server.get().start();
requestPermission();
setRecyclerView();
setViewModel();
setAdapter();
@ -141,12 +139,6 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
}
}
private void requestPermission() {
PermissionX.init(this).permissions(PermissionX.permission.POST_NOTIFICATIONS).request((allGranted, grantedList, deniedList) -> {
if (Setting.hasFileManager()) PermissionX.init(this).permissions().requestManageExternalStoragePermissionNow(new ChainTask());
});
}
private void setRecyclerView() {
CustomSelector selector = new CustomSelector();
selector.addPresenter(Integer.class, new HeaderPresenter());

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
@ -38,11 +37,11 @@ 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.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
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;
@ -129,8 +128,8 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
@Override
public void setConfig(Config config) {
if (config.getUrl().startsWith("file") && !PermissionX.isGranted(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> load(config));
if (config.getUrl().startsWith("file")) {
PermissionUtil.requestFile(this, allGranted -> load(config));
} else {
load(config);
}
@ -319,7 +318,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
}
private void onBackup(View view) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() {
PermissionUtil.requestFile(this, allGranted -> AppDatabase.backup(new Callback() {
@Override
public void success() {
Notify.show(R.string.backup_success);
@ -333,7 +332,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
}
private void onRestore(View view) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> RestoreDialog.create(this).show(new Callback() {
PermissionUtil.requestFile(this, allGranted -> RestoreDialog.create(getActivity()).show(new Callback() {
@Override
public void success() {
Notify.show(R.string.restore_success);

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
@ -77,13 +76,13 @@ import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.KeyUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Util;
import com.github.bassaer.library.MDColor;
import com.github.catvod.utils.Trans;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -146,7 +145,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
public static void file(FragmentActivity activity, String path) {
if (TextUtils.isEmpty(path)) return;
String name = new File(path).getName();
PermissionX.init(activity).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> start(activity, "push_agent", "file://" + path, name));
PermissionUtil.requestFile(activity, allGranted -> start(activity, "push_agent", "file://" + path, name));
}
public static void cast(Activity activity, History history) {

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.custom;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.graphics.PorterDuff;
@ -17,9 +16,9 @@ import androidx.fragment.app.FragmentActivity;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.KeyUtil;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.bassaer.library.MDColor;
import com.permissionx.guolindev.PermissionX;
public class CustomMic extends AppCompatImageView {
@ -49,16 +48,6 @@ public class CustomMic extends AppCompatImageView {
this.activity = activity;
}
private void checkPermission() {
if (PermissionX.isGranted(activity, Manifest.permission.RECORD_AUDIO)) {
start();
} else {
PermissionX.init(activity).permissions(Manifest.permission.RECORD_AUDIO).request((allGranted, grantedList, deniedList) -> {
if (allGranted) start();
});
}
}
private void startListening() {
try {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
@ -95,8 +84,10 @@ public class CustomMic extends AppCompatImageView {
@Override
protected void onFocusChanged(boolean gainFocus, int direction, @Nullable Rect previouslyFocusedRect) {
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus) checkPermission();
else stop();
if (!gainFocus) stop();
else PermissionUtil.requestAudio(activity, allGranted -> {
if (allGranted) start();
});
}
@Override

@ -1,31 +0,0 @@
package com.fongmi.android.tv.impl;
import com.permissionx.guolindev.request.ExplainScope;
import com.permissionx.guolindev.request.ForwardScope;
import java.util.List;
public class ChainTask implements com.permissionx.guolindev.request.ChainTask {
@Override
public ExplainScope getExplainScope() {
return null;
}
@Override
public ForwardScope getForwardScope() {
return null;
}
@Override
public void request() {
}
@Override
public void requestAgain(List<String> permissions) {
}
@Override
public void finish() {
}
}

@ -0,0 +1,52 @@
package com.fongmi.android.tv.impl;
import androidx.annotation.NonNull;
import com.permissionx.guolindev.callback.RequestCallback;
import com.permissionx.guolindev.request.ChainTask;
import com.permissionx.guolindev.request.ExplainScope;
import com.permissionx.guolindev.request.ForwardScope;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
public class PermissionCallback implements RequestCallback, ChainTask {
private Consumer<Boolean> result;
public PermissionCallback() {
}
public PermissionCallback(Consumer<Boolean> result) {
this.result = Objects.requireNonNull(result);
}
@Override
public void onResult(boolean allGranted, @NonNull List<String> grantedList, @NonNull List<String> deniedList) {
if (result != null) result.accept(allGranted);
}
@Override
public void finish() {
if (result != null) result.accept(true);
}
@Override
public ExplainScope getExplainScope() {
return null;
}
@Override
public ForwardScope getForwardScope() {
return null;
}
@Override
public void request() {
}
@Override
public void requestAgain(List<String> permissions) {
}
}

@ -0,0 +1,33 @@
package com.fongmi.android.tv.utils;
import android.Manifest;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.impl.PermissionCallback;
import com.permissionx.guolindev.PermissionX;
import java.util.function.Consumer;
public class PermissionUtil {
public static void requestAudio(FragmentActivity activity, Consumer<Boolean> callback) {
PermissionX.init(activity).permissions(Manifest.permission.RECORD_AUDIO).request(new PermissionCallback(callback));
}
public static void requestFile(FragmentActivity activity, Consumer<Boolean> callback) {
if (Setting.hasFileManager()) PermissionX.init(activity).permissions().requestManageExternalStoragePermissionNow(new PermissionCallback(callback));
else PermissionX.init(activity).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request(new PermissionCallback(callback));
}
public static void requestFile(Fragment fragment, Consumer<Boolean> callback) {
if (Setting.hasFileManager()) PermissionX.init(fragment).permissions().requestManageExternalStoragePermissionNow(new PermissionCallback(callback));
else PermissionX.init(fragment).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request(new PermissionCallback(callback));
}
public static void requestNotify(FragmentActivity activity) {
PermissionX.init(activity).permissions(PermissionX.permission.POST_NOTIFICATIONS).request(new PermissionCallback());
}
}

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@ -14,8 +13,8 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.databinding.ActivityFileBinding;
import com.fongmi.android.tv.ui.adapter.FileAdapter;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.github.catvod.utils.Path;
import com.permissionx.guolindev.PermissionX;
import java.io.File;
@ -48,15 +47,15 @@ public class FileActivity extends BaseActivity implements FileAdapter.OnClickLis
checkPermission();
}
private void checkPermission() {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> update(Path.root()));
}
private void setRecyclerView() {
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.setAdapter(mAdapter = new FileAdapter(this));
}
private void checkPermission() {
PermissionUtil.requestFile(this, allGranted -> update(Path.root()));
}
private void update(File dir) {
mBinding.recycler.scrollToPosition(0);
mAdapter.addAll(Path.list(this.dir = dir));

@ -17,7 +17,6 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.config.LiveConfig;
import com.fongmi.android.tv.api.config.VodConfig;
@ -29,7 +28,6 @@ import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.event.ServerEvent;
import com.fongmi.android.tv.event.StateEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.ChainTask;
import com.fongmi.android.tv.player.Source;
import com.fongmi.android.tv.receiver.ShortcutReceiver;
import com.fongmi.android.tv.server.Server;
@ -40,10 +38,10 @@ import com.fongmi.android.tv.ui.fragment.SettingPlayerFragment;
import com.fongmi.android.tv.ui.fragment.VodFragment;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.UrlUtil;
import com.github.catvod.net.OkHttp;
import com.google.android.material.navigation.NavigationBarView;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -75,9 +73,9 @@ public class HomeActivity extends BaseActivity implements NavigationBarView.OnIt
protected void initView(Bundle savedInstanceState) {
orientation = getResources().getConfiguration().orientation;
Updater.create().release().start(this);
PermissionUtil.requestNotify(this);
initFragment(savedInstanceState);
Server.get().start();
requestPermission();
initConfig();
}
@ -112,12 +110,6 @@ public class HomeActivity extends BaseActivity implements NavigationBarView.OnIt
if (savedInstanceState == null) mManager.change(0);
}
private void requestPermission() {
PermissionX.init(this).permissions(PermissionX.permission.POST_NOTIFICATIONS).request((allGranted, grantedList, deniedList) -> {
if (Setting.hasFileManager()) PermissionX.init(this).permissions().requestManageExternalStoragePermissionNow(new ChainTask());
});
}
private void initConfig() {
WallConfig.get().init();
LiveConfig.get().init().load();

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
@ -87,6 +86,7 @@ import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.PermissionUtil;
import com.fongmi.android.tv.utils.PiP;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Sniffer;
@ -96,7 +96,6 @@ import com.fongmi.android.tv.utils.Util;
import com.github.bassaer.library.MDColor;
import com.github.catvod.utils.Trans;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -156,7 +155,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
public static void file(FragmentActivity activity, String path) {
if (TextUtils.isEmpty(path)) return;
String name = new File(path).getName();
PermissionX.init(activity).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> start(activity, "push_agent", "file://" + path, name));
PermissionUtil.requestFile(activity, allGranted -> start(activity, "push_agent", "file://" + path, name));
}
public static void cast(Activity activity, History history) {

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.fragment;
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.view.LayoutInflater;
@ -41,12 +40,12 @@ 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.PermissionUtil;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.bean.Doh;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Path;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.permissionx.guolindev.PermissionX;
import java.util.ArrayList;
import java.util.List;
@ -136,8 +135,8 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
@Override
public void setConfig(Config config) {
if (config.getUrl().startsWith("file") && !PermissionX.isGranted(requireActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> load(config));
if (config.getUrl().startsWith("file")) {
PermissionUtil.requestFile(this, allGranted -> load(config));
} else {
load(config);
}
@ -330,7 +329,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
}
private void onBackup(View view) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> AppDatabase.backup(new Callback() {
PermissionUtil.requestFile(this, allGranted -> AppDatabase.backup(new Callback() {
@Override
public void success() {
Notify.show(R.string.backup_success);
@ -344,7 +343,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
}
private void onRestore(View view) {
PermissionX.init(this).permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE).request((allGranted, grantedList, deniedList) -> RestoreDialog.create().show(requireActivity(), new Callback() {
PermissionUtil.requestFile(this, allGranted -> RestoreDialog.create().show(requireActivity(), new Callback() {
@Override
public void success() {
Notify.show(R.string.restore_success);

Loading…
Cancel
Save