Commit a1ebbd54720b86967663299989803225f2e430e4

Authored by YangShuai
1 parent b7f8e6f8

1 优化基类权限申请逻辑

app/strike/src/main/java/com/cnlive/strike/MainActivity.java
... ... @@ -34,6 +34,7 @@ public class MainActivity extends AppCompatActivity {
34 34 public void onClick(View v) {
35 35 if (TextUtils.isEmpty(UserService.getUid(MainActivity.this))) {
36 36 startActivity(new Intent(MainActivity.this, LoginActivity.class));
  37 +// finish();
37 38 } else {
38 39 startActivity(new Intent(MainActivity.this, MyActivity.class));
39 40 }
... ...
app/strike/src/main/java/com/cnlive/strike/MyActivity.java
... ... @@ -44,6 +44,8 @@ public class MyActivity extends BaseActivity {
44 44 binding.btnChange.setOnClickListener(new View.OnClickListener() {
45 45 @Override
46 46 public void onClick(View v) {
  47 + startActivity(new Intent(MyActivity.this, RunLineActivity.class));
  48 +
47 49 // WjjPay.passwordIsExisting(UserService.getUid(me), new NetCallBack<BaseResult<GroupBalanceInfo>>() {
48 50 // @Override
49 51 // public void onRequestState(int state) {
... ... @@ -60,24 +62,24 @@ public class MyActivity extends BaseActivity {
60 62 // QMUITipDialogUtil.failedDialog(me, errMsg, 3);
61 63 // }
62 64 // });
63   - WjjPay.setPassword(UserService.getUid(me), "123456", new NetCallBack<BaseResult>() {
64   - @Override
65   - public void onRequestState(int state) {
66   - if (state == HttpConn.ON_START) {
67   - QMUITipDialogUtil.loadingDialog(me, "修改中", true);
68   - }
69   - }
70   -
71   - @Override
72   - public void onSuccess(BaseResult data) {
73   - QMUITipDialogUtil.successDialog(me, data.getMessage(), 5);
74   - }
75   -
76   - @Override
77   - public void onFailure(String errCode, String errMsg) {
78   - QMUITipDialogUtil.failedDialog(me, errMsg, 3);
79   - }
80   - });
  65 +// WjjPay.setPassword(UserService.getUid(me), "123456", new NetCallBack<BaseResult>() {
  66 +// @Override
  67 +// public void onRequestState(int state) {
  68 +// if (state == HttpConn.ON_START) {
  69 +// QMUITipDialogUtil.loadingDialog(me, "修改中", true);
  70 +// }
  71 +// }
  72 +//
  73 +// @Override
  74 +// public void onSuccess(BaseResult data) {
  75 +// QMUITipDialogUtil.successDialog(me, data.getMessage(), 5);
  76 +// }
  77 +//
  78 +// @Override
  79 +// public void onFailure(String errCode, String errMsg) {
  80 +// QMUITipDialogUtil.failedDialog(me, errMsg, 3);
  81 +// }
  82 +// });
81 83 }
82 84 });
83 85 }
... ...
cloud/user/src/main/AndroidManifest.xml
... ... @@ -39,7 +39,6 @@
39 39 android:name="WEIBO_CHANNEL"
40 40 android:value="weibo" />
41 41  
42   - <activity android:name="com.cnlive.strike.moudle.user.ui.activity.MainTestActivity" />
43 42 <activity
44 43 android:name=".ui.activity.LoginActivity"
45 44 android:configChanges="keyboardHidden|screenSize|orientation|smallestScreenSize|screenLayout"
... ... @@ -50,12 +49,6 @@
50 49 <action android:name="android.accounts.AccountAuthenticator" />
51 50 </intent-filter>
52 51 </activity>
53   -
54   - <activity
55   - android:name="com.cnlive.strike.moudle.user.ui.activity.BindPhoneNumberActivity"
56   - android:configChanges="keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation"
57   - android:launchMode="singleTop"
58   - android:screenOrientation="portrait" />
59 52 <activity
60 53 android:name=".ui.activity.FirstLoginActivity"
61 54 android:configChanges="keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation"
... ...
cloud/user/src/main/java/com/cnlive/strike/user/sms/SmsVerifyCatcher.java
... ... @@ -27,6 +27,9 @@ import androidx.core.app.ActivityCompat;
27 27 import androidx.core.content.ContextCompat;
28 28 import androidx.fragment.app.Fragment;
29 29  
  30 +import com.cnlive.core.libs.base.frame.fragment.BaseFragment;
  31 +import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener;
  32 +
30 33 /**
31 34 * Created by Anton Bevza on 8/15/16.
32 35 */
... ... @@ -35,7 +38,7 @@ public class SmsVerifyCatcher {
35 38 public static int PERMISSION_REQUEST_CODE = 12;
36 39  
37 40 private Activity activity;
38   - private Fragment fragment;
  41 + private BaseFragment fragment;
39 42 private OnSmsCatchListener<String> onSmsCatchListener;
40 43 private SmsReceiver smsReceiver;
41 44 private String phoneNumber;
... ... @@ -49,13 +52,17 @@ public class SmsVerifyCatcher {
49 52 smsReceiver.setCallback(this.onSmsCatchListener);
50 53 }
51 54  
52   - public SmsVerifyCatcher(Activity activity, Fragment fragment, OnSmsCatchListener<String> onSmsCatchListener) {
  55 + public SmsVerifyCatcher(Activity activity, BaseFragment fragment, OnSmsCatchListener<String> onSmsCatchListener) {
53 56 this(activity, onSmsCatchListener);
54 57 this.fragment = fragment;
  58 +
55 59 }
56 60  
57 61 //For fragments
58   - public static boolean isStoragePermissionGranted(Activity activity, Fragment fragment) {
  62 + public static boolean isStoragePermissionGranted(Activity activity, BaseFragment fragment) {
  63 + if (null==fragment){
  64 + return false;
  65 + }
59 66 if (Build.VERSION.SDK_INT >= 23) {
60 67 if (ContextCompat.checkSelfPermission(activity, Manifest.permission.RECEIVE_SMS)
61 68 == PackageManager.PERMISSION_GRANTED &&
... ...
cloud/user/src/main/java/com/cnlive/strike/user/ui/activity/LoginActivity.java
... ... @@ -15,6 +15,8 @@ import com.cnlive.core.libs.base.frame.fragment.BaseFragment;
15 15 import com.cnlive.core.libs.base.util.FragmentUtil;
16 16 import com.cnlive.strike.user.R;
17 17 import com.cnlive.strike.user.ui.fragment.QuickLoginFragment;
  18 +import com.me.yokeyword.fragmentation.anim.DefaultHorizontalAnimator;
  19 +import com.me.yokeyword.fragmentation.anim.FragmentAnimator;
18 20  
19 21 /**
20 22 * @author Lynn
... ... @@ -24,7 +26,6 @@ import com.cnlive.strike.user.ui.fragment.QuickLoginFragment;
24 26 @Route(path = LoginActivity.PATH)
25 27 public class LoginActivity extends BaseActivity {
26 28 public static final String PATH = "/cloud/user/ui/activity/login";
27   -
28 29 public static String FROM_TOKEN_ERROR = "from_token_error";
29 30 public static String TAG_MSG = "tagMsg";
30 31 public static String TAG_SHARE = "tagValue";
... ... @@ -71,13 +72,17 @@ public class LoginActivity extends BaseActivity {
71 72 context.startActivity(intent);
72 73 }
73 74  
74   -
75 75 @Override
76   - protected void initView() {
  76 + protected void initParam() {
  77 + super.initParam();
77 78 fromTokenError = getIntent().getBooleanExtra(FROM_TOKEN_ERROR, false);
78 79 tagMsg = getIntent().getStringExtra(TAG_MSG) == null ? "" : getIntent().getStringExtra(TAG_MSG);
79 80 shareType = getIntent().getStringExtra(TAG_SHARE);
80 81 clickAd = getIntent().getBooleanExtra(TAG_CLICK_AD, false);
  82 + }
  83 +
  84 + @Override
  85 + protected void initView() {
81 86 addFragment();
82 87 }
83 88  
... ... @@ -105,4 +110,5 @@ public class LoginActivity extends BaseActivity {
105 110 if (quickLoginFragment != null)
106 111 quickLoginFragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
107 112 }
  113 +
108 114 }
... ...
core/base/src/main/java/com/cnlive/core/libs/base/frame/activity/BaseActivity.java
... ... @@ -99,6 +99,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
99 99 private final SwipeBackActivityDelegate mSwipeDelegate = new SwipeBackActivityDelegate(this);
100 100 private boolean isDefinePermissionCloseActivity = false;
101 101 private boolean isUserClickAllowBtn = false;//用户是否点击允许按钮
  102 + private boolean isShowRefuseDialog = true;//是否显示拒绝提示框
102 103 private String[] userSetPermission;
103 104  
104 105 @Override
... ... @@ -281,6 +282,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
281 282 isUserClickAllowBtn = false;
282 283 int requestCode = DEFAULT_REQUEST_CODE_PERMISSION;
283 284 String tip = defaultDefinePermissionTip;
  285 + boolean isShowDialog = isShowRefuseDialog;
284 286 if (null != onPermissionResponseListener && null != userSetPermission) {
285 287 if (null != userSetDefinePermissionTip) {
286 288 tip = userSetDefinePermissionTip;
... ... @@ -289,7 +291,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
289 291 requestCode = USER_SET_REQUEST_CODE_PERMISSION;
290 292 }
291 293 //开始请求
292   - requestPermission(requestCode, tip, isDefinePermissionCloseActivity, userSetPermission, onPermissionResponseListener);
  294 + requestPermission(requestCode, tip, isDefinePermissionCloseActivity, userSetPermission, isShowDialog, onPermissionResponseListener);
293 295 }
294 296 }
295 297 }
... ... @@ -482,6 +484,20 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
482 484 }
483 485 }
484 486  
  487 + public void requestPermission(String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  488 + onPermissionResponseListener) {
  489 + this.onPermissionResponseListener = onPermissionResponseListener;
  490 + this.isShowRefuseDialog = isShowRefuseDialog;
  491 + if (checkPermissions(permissions)) {
  492 + if (onPermissionResponseListener != null) {
  493 + onPermissionResponseListener.onSuccess(permissions);
  494 + }
  495 + } else {
  496 + List<String> needPermissions = getDeniedPermissions(permissions);
  497 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), DEFAULT_REQUEST_CODE_PERMISSION);
  498 + }
  499 + }
  500 +
485 501 /**
486 502 * 请求权限
487 503 * <p>
... ... @@ -491,6 +507,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
491 507 * @param permissions 请求的权限
492 508 * @param onPermissionResponseListener 回调监听器
493 509 */
  510 +
494 511 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
495 512 onPermissionResponseListener) {
496 513 this.onPermissionResponseListener = onPermissionResponseListener;
... ... @@ -505,6 +522,21 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
505 522 }
506 523 }
507 524  
  525 + public void requestPermission(boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  526 + onPermissionResponseListener) {
  527 + this.onPermissionResponseListener = onPermissionResponseListener;
  528 + this.isDefinePermissionCloseActivity = isDefineActivity;
  529 + this.isShowRefuseDialog = isShowRefuseDialog;
  530 + if (checkPermissions(permissions)) {
  531 + if (onPermissionResponseListener != null) {
  532 + onPermissionResponseListener.onSuccess(permissions);
  533 + }
  534 + } else {
  535 + List<String> needPermissions = getDeniedPermissions(permissions);
  536 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), DEFAULT_REQUEST_CODE_PERMISSION);
  537 + }
  538 + }
  539 +
508 540 /**
509 541 * 请求权限
510 542 * <p>
... ... @@ -514,6 +546,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
514 546 * @param permissions 请求的权限
515 547 * @param onPermissionResponseListener 回调监听器
516 548 */
  549 +
517 550 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
518 551 onPermissionResponseListener) {
519 552 this.isDefinePermissionCloseActivity = isDefineActivity;
... ... @@ -530,6 +563,23 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
530 563 }
531 564 }
532 565  
  566 + public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  567 + onPermissionResponseListener) {
  568 + this.isDefinePermissionCloseActivity = isDefineActivity;
  569 + this.userSetDefinePermissionTip = defineTip;
  570 + this.onPermissionResponseListener = onPermissionResponseListener;
  571 + this.isShowRefuseDialog = isShowRefuseDialog;
  572 + this.userSetPermission = permissions;
  573 + if (checkPermissions(permissions)) {
  574 + if (onPermissionResponseListener != null) {
  575 + onPermissionResponseListener.onSuccess(permissions);
  576 + }
  577 + } else {
  578 + List<String> needPermissions = getDeniedPermissions(permissions);
  579 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), DEFAULT_REQUEST_CODE_PERMISSION);
  580 + }
  581 + }
  582 +
533 583 /**
534 584 * 请求权限
535 585 * <p>
... ... @@ -553,6 +603,21 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
553 603 }
554 604 }
555 605  
  606 + public void requestPermission(String defineTip, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  607 + onPermissionResponseListener) {
  608 + this.userSetDefinePermissionTip = defineTip;
  609 + this.onPermissionResponseListener = onPermissionResponseListener;
  610 + this.isShowRefuseDialog = isShowRefuseDialog;
  611 + if (checkPermissions(permissions)) {
  612 + if (onPermissionResponseListener != null) {
  613 + onPermissionResponseListener.onSuccess(permissions);
  614 + }
  615 + } else {
  616 + List<String> needPermissions = getDeniedPermissions(permissions);
  617 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), DEFAULT_REQUEST_CODE_PERMISSION);
  618 + }
  619 + }
  620 +
556 621 /**
557 622 * 自定义权限申请码
558 623 *
... ... @@ -575,6 +640,22 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
575 640 }
576 641 }
577 642  
  643 + public void requestPermission(int requestCode, boolean isDefineActivity, String[]
  644 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  645 + this.onPermissionResponseListener = onPermissionResponseListener;
  646 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  647 + this.isDefinePermissionCloseActivity = isDefineActivity;
  648 + this.isShowRefuseDialog = isShowRefuseDialog;
  649 + if (checkPermissions(permissions)) {
  650 + if (onPermissionResponseListener != null) {
  651 + onPermissionResponseListener.onSuccess(permissions);
  652 + }
  653 + } else {
  654 + List<String> needPermissions = getDeniedPermissions(permissions);
  655 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  656 + }
  657 + }
  658 +
578 659 /**
579 660 * 自定义权限申请码
580 661 *
... ... @@ -596,6 +677,21 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
596 677 }
597 678 }
598 679  
  680 + public void requestPermission(int requestCode, String[]
  681 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  682 + this.onPermissionResponseListener = onPermissionResponseListener;
  683 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  684 + this.isShowRefuseDialog = isShowRefuseDialog;
  685 + if (checkPermissions(permissions)) {
  686 + if (onPermissionResponseListener != null) {
  687 + onPermissionResponseListener.onSuccess(permissions);
  688 + }
  689 + } else {
  690 + List<String> needPermissions = getDeniedPermissions(permissions);
  691 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  692 + }
  693 + }
  694 +
599 695 /**
600 696 * 自定义权限申请码和提示信息
601 697 *
... ... @@ -619,6 +715,23 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
619 715 }
620 716 }
621 717  
  718 + public void requestPermission(int requestCode, String defineTip, boolean isDefineActivity, String[]
  719 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  720 + this.onPermissionResponseListener = onPermissionResponseListener;
  721 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  722 + this.isDefinePermissionCloseActivity = isDefineActivity;
  723 + this.userSetDefinePermissionTip = defineTip;
  724 + this.isShowRefuseDialog = isShowRefuseDialog;
  725 + if (checkPermissions(permissions)) {
  726 + if (onPermissionResponseListener != null) {
  727 + onPermissionResponseListener.onSuccess(permissions);
  728 + }
  729 + } else {
  730 + List<String> needPermissions = getDeniedPermissions(permissions);
  731 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  732 + }
  733 + }
  734 +
622 735 /**
623 736 * 自定义权限申请码和提示信息
624 737 *
... ... @@ -641,6 +754,22 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
641 754 }
642 755 }
643 756  
  757 + public void requestPermission(int requestCode, String defineTip, String[]
  758 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  759 + this.onPermissionResponseListener = onPermissionResponseListener;
  760 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  761 + this.userSetDefinePermissionTip = defineTip;
  762 + this.isShowRefuseDialog = isShowRefuseDialog;
  763 + if (checkPermissions(permissions)) {
  764 + if (onPermissionResponseListener != null) {
  765 + onPermissionResponseListener.onSuccess(permissions);
  766 + }
  767 + } else {
  768 + List<String> needPermissions = getDeniedPermissions(permissions);
  769 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  770 + }
  771 + }
  772 +
644 773 /**
645 774 * 自定义权限申请码和提示信息
646 775 * 可传入string字符串
... ... @@ -665,6 +794,23 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
665 794 }
666 795 }
667 796  
  797 + public void requestPermission(int requestCode, @StringRes int defineTip, boolean isDefineActivity, String[]
  798 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  799 + this.onPermissionResponseListener = onPermissionResponseListener;
  800 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  801 + this.userSetDefinePermissionTip = getResources().getString(defineTip);
  802 + this.isDefinePermissionCloseActivity = isDefineActivity;
  803 + this.isShowRefuseDialog = isShowRefuseDialog;
  804 + if (checkPermissions(permissions)) {
  805 + if (onPermissionResponseListener != null) {
  806 + onPermissionResponseListener.onSuccess(permissions);
  807 + }
  808 + } else {
  809 + List<String> needPermissions = getDeniedPermissions(permissions);
  810 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  811 + }
  812 + }
  813 +
668 814 /**
669 815 * 自定义权限申请码和提示信息
670 816 * 可传入string字符串
... ... @@ -688,6 +834,22 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
688 834 }
689 835 }
690 836  
  837 + public void requestPermission(int requestCode, @StringRes int defineTip, String[]
  838 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  839 + this.onPermissionResponseListener = onPermissionResponseListener;
  840 + this.USER_SET_REQUEST_CODE_PERMISSION = requestCode;
  841 + this.userSetDefinePermissionTip = getResources().getString(defineTip);
  842 + this.isShowRefuseDialog = isShowRefuseDialog;
  843 + if (checkPermissions(permissions)) {
  844 + if (onPermissionResponseListener != null) {
  845 + onPermissionResponseListener.onSuccess(permissions);
  846 + }
  847 + } else {
  848 + List<String> needPermissions = getDeniedPermissions(permissions);
  849 + ActivityCompat.requestPermissions(this, needPermissions.toArray(new String[needPermissions.size()]), USER_SET_REQUEST_CODE_PERMISSION);
  850 + }
  851 + }
  852 +
691 853 /**
692 854 * 获取权限集中需要申请权限的列表
693 855 *
... ... @@ -717,6 +879,13 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
717 879 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
718 880 @NonNull int[] grantResults) {
719 881 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  882 + if (null != getSupportFragmentManager() && null != getSupportFragmentManager().getFragments()) {
  883 + for (Fragment fragment : getSupportFragmentManager().getFragments()) {
  884 + if (null != fragment) {
  885 + fragment.onRequestPermissionsResult(requestCode, permissions, grantResults);
  886 + }
  887 + }
  888 + }
720 889 //默认权限申请码
721 890 if (requestCode == DEFAULT_REQUEST_CODE_PERMISSION) {
722 891 if (verifyPermissions(grantResults)) {
... ... @@ -727,7 +896,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
727 896 if (onPermissionResponseListener != null) {
728 897 onPermissionResponseListener.onFail();
729 898 }
730   - showTipsDialog();
  899 + if (isShowRefuseDialog) {
  900 + showTipsDialog();
  901 + } else {
  902 + //重置显示值
  903 + isShowRefuseDialog = true;
  904 + if (isDefinePermissionCloseActivity) {
  905 + finish();
  906 + isDefinePermissionCloseActivity = false;
  907 + }
  908 + }
731 909 }
732 910 }
733 911 //用户自定义权限申请码
... ... @@ -740,7 +918,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
740 918 if (onPermissionResponseListener != null) {
741 919 onPermissionResponseListener.onFail();
742 920 }
743   - showTipsDialog();
  921 + if (isShowRefuseDialog) {
  922 + showTipsDialog();
  923 + } else {
  924 + //重置显示值
  925 + isShowRefuseDialog = true;
  926 + if (isDefinePermissionCloseActivity) {
  927 + finish();
  928 + isDefinePermissionCloseActivity = false;
  929 + }
  930 + }
744 931 }
745 932 //重置用户提示语
746 933 userSetDefinePermissionTip = "";
... ... @@ -812,16 +999,11 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
812 999 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
813 1000 @Override
814 1001 public void onClick(DialogInterface dialog, int which) {
  1002 + isUserClickAllowBtn = false;
  1003 + isShowRefuseDialog = true;
815 1004 if (isDefinePermissionCloseActivity) {
816 1005 isDefinePermissionCloseActivity = false;
817   - //先判断当前是否是多个activity
818   -// if (null != getSupportFragmentManager().getFragments() && getSupportFragmentManager().getFragments().size() > 1) {
819   -// //移除最上层的
820   -// pop();
821   -// } else {
822 1006 finish();
823   -// }
824   -
825 1007 }
826 1008  
827 1009 }
... ... @@ -997,6 +1179,10 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
997 1179 mDelegate.loadRootFragment(R.id.root_container, toFragment);
998 1180 }
999 1181  
  1182 + public void loadRootFragment(@NonNull ISupportFragment toFragment, boolean allowAnimation) {
  1183 + mDelegate.loadRootFragment(R.id.root_container, toFragment, allowAnimation);
  1184 + }
  1185 +
1000 1186 /**
1001 1187 * 加载根Fragment, 即Activity内的第一个Fragment 或 Fragment内的第一个子Fragment
1002 1188 *
... ... @@ -1007,6 +1193,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
1007 1193 mDelegate.loadRootFragment(containerId, toFragment);
1008 1194 }
1009 1195  
  1196 + /**
  1197 + * 加载根Fragment, 即Activity内的第一个Fragment 或 Fragment内的第一个子Fragment
  1198 + *
  1199 + * @param containerId 容器id
  1200 + * @param toFragment 目标Fragment
  1201 + */
  1202 + public void loadRootFragment(int containerId, @NonNull ISupportFragment toFragment, boolean allowAnimation) {
  1203 + mDelegate.loadRootFragment(containerId, toFragment, allowAnimation);
  1204 + }
  1205 +
1010 1206 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) {
1011 1207 mDelegate.loadRootFragment(containerId, toFragment, addToBackStack, allowAnimation);
1012 1208 }
... ... @@ -1019,6 +1215,13 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
1019 1215 }
1020 1216  
1021 1217 /**
  1218 + * 加载多个同级根Fragment,类似Wechat, QQ主页的场景
  1219 + */
  1220 + public void loadMultipleRootFragment(int showPosition, ISupportFragment... toFragments) {
  1221 + mDelegate.loadMultipleRootFragment(R.id.root_container, showPosition, toFragments);
  1222 + }
  1223 +
  1224 + /**
1022 1225 * show一个Fragment,hide其他同栈所有Fragment
1023 1226 * 使用该方法时,要确保同级栈内无多余的Fragment,(只有通过loadMultipleRootFragment()载入的Fragment)
1024 1227 * <p>
... ...
core/base/src/main/java/com/cnlive/core/libs/base/frame/fragment/BaseFragment.java
... ... @@ -268,51 +268,95 @@ public abstract class BaseFragment&lt;V extends BaseView, P extends BasePresenter&lt;V
268 268 me.requestPermission(permissions, onPermissionResponseListener);
269 269 }
270 270  
  271 + public void requestPermission(String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  272 + me.requestPermission(permissions, isShowRefuseDialog, onPermissionResponseListener);
  273 + }
  274 +
271 275 //权限申请
272 276 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
273 277 me.requestPermission(isDefineActivity, permissions, onPermissionResponseListener);
274 278 }
275 279  
  280 + public void requestPermission(boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  281 + me.requestPermission(isDefineActivity, permissions, isShowRefuseDialog, onPermissionResponseListener);
  282 + }
  283 +
276 284 //权限申请
277 285 public void requestPermission(int requestCode, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
278 286 me.requestPermission(requestCode, permissions, onPermissionResponseListener);
279 287 }
280 288  
  289 + public void requestPermission(int requestCode, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  290 + me.requestPermission(requestCode, permissions, isShowRefuseDialog, onPermissionResponseListener);
  291 + }
  292 +
281 293 //权限申请
282 294 public void requestPermission(int requestCode, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
283 295 me.requestPermission(requestCode, isDefineActivity, permissions, onPermissionResponseListener);
284 296 }
285 297  
  298 + public void requestPermission(int requestCode, boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  299 + me.requestPermission(requestCode, isDefineActivity, permissions, isShowRefuseDialog, onPermissionResponseListener);
  300 + }
  301 +
286 302 //权限申请
287 303 public void requestPermission(int requestCode, String defineTip, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
288 304 me.requestPermission(requestCode, defineTip, permissions, onPermissionResponseListener);
289 305 }
290 306  
  307 + public void requestPermission(int requestCode, String defineTip, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  308 + me.requestPermission(requestCode, defineTip, permissions, isShowRefuseDialog, onPermissionResponseListener);
  309 + }
  310 +
291 311 //权限申请
292 312 public void requestPermission(int requestCode, String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
293 313 me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, onPermissionResponseListener);
294 314 }
295 315  
  316 + public void requestPermission(int requestCode, String defineTip, boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  317 + me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, isShowRefuseDialog, onPermissionResponseListener);
  318 + }
  319 +
296 320 public void requestPermission(String defineTip, String[] permissions, OnPermissionResponseListener
297 321 onPermissionResponseListener) {
298 322 me.requestPermission(defineTip, permissions, onPermissionResponseListener);
299 323 }
300 324  
  325 + public void requestPermission(String defineTip, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  326 + onPermissionResponseListener) {
  327 + me.requestPermission(defineTip, permissions, isShowRefuseDialog, onPermissionResponseListener);
  328 + }
  329 +
301 330 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
302 331 onPermissionResponseListener) {
303 332 me.requestPermission(defineTip, isDefineActivity, permissions, onPermissionResponseListener);
304 333 }
305 334  
  335 + public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, boolean isShowRefuseDialog, OnPermissionResponseListener
  336 + onPermissionResponseListener) {
  337 + me.requestPermission(defineTip, isDefineActivity, permissions, isShowRefuseDialog, onPermissionResponseListener);
  338 + }
  339 +
306 340 public void requestPermission(int requestCode, @StringRes int defineTip, String[]
307 341 permissions, OnPermissionResponseListener onPermissionResponseListener) {
308 342 me.requestPermission(requestCode, defineTip, permissions, onPermissionResponseListener);
309 343 }
310 344  
  345 + public void requestPermission(int requestCode, @StringRes int defineTip, String[]
  346 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  347 + me.requestPermission(requestCode, defineTip, permissions, isShowRefuseDialog, onPermissionResponseListener);
  348 + }
  349 +
311 350 public void requestPermission(int requestCode, @StringRes int defineTip, boolean isDefineActivity, String[]
312 351 permissions, OnPermissionResponseListener onPermissionResponseListener) {
313 352 me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, onPermissionResponseListener);
314 353 }
315 354  
  355 + public void requestPermission(int requestCode, @StringRes int defineTip, boolean isDefineActivity, String[]
  356 + permissions, boolean isShowRefuseDialog, OnPermissionResponseListener onPermissionResponseListener) {
  357 + me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, isShowRefuseDialog, onPermissionResponseListener);
  358 + }
  359 +
316 360 //多权限检查
317 361 public boolean checkPermissions(String[] permissions) {
318 362 return me.checkPermissions(permissions);
... ...
core/base/src/main/java/com/me/yokeyword/fragmentation/SupportActivityDelegate.java
... ... @@ -192,6 +192,10 @@ public class SupportActivityDelegate {
192 192 loadRootFragment(containerId, toFragment, true, false);
193 193 }
194 194  
  195 + public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean allowAnimation) {
  196 + loadRootFragment(containerId, toFragment, true, allowAnimation);
  197 + }
  198 +
195 199 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) {
196 200 mTransactionDelegate.loadRootTransaction(getSupportFragmentManager(), containerId, toFragment, addToBackStack, allowAnimation);
197 201 }
... ...