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,6 +34,7 @@ public class MainActivity extends AppCompatActivity {
34 public void onClick(View v) { 34 public void onClick(View v) {
35 if (TextUtils.isEmpty(UserService.getUid(MainActivity.this))) { 35 if (TextUtils.isEmpty(UserService.getUid(MainActivity.this))) {
36 startActivity(new Intent(MainActivity.this, LoginActivity.class)); 36 startActivity(new Intent(MainActivity.this, LoginActivity.class));
  37 +// finish();
37 } else { 38 } else {
38 startActivity(new Intent(MainActivity.this, MyActivity.class)); 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,6 +44,8 @@ public class MyActivity extends BaseActivity {
44 binding.btnChange.setOnClickListener(new View.OnClickListener() { 44 binding.btnChange.setOnClickListener(new View.OnClickListener() {
45 @Override 45 @Override
46 public void onClick(View v) { 46 public void onClick(View v) {
  47 + startActivity(new Intent(MyActivity.this, RunLineActivity.class));
  48 +
47 // WjjPay.passwordIsExisting(UserService.getUid(me), new NetCallBack<BaseResult<GroupBalanceInfo>>() { 49 // WjjPay.passwordIsExisting(UserService.getUid(me), new NetCallBack<BaseResult<GroupBalanceInfo>>() {
48 // @Override 50 // @Override
49 // public void onRequestState(int state) { 51 // public void onRequestState(int state) {
@@ -60,24 +62,24 @@ public class MyActivity extends BaseActivity { @@ -60,24 +62,24 @@ public class MyActivity extends BaseActivity {
60 // QMUITipDialogUtil.failedDialog(me, errMsg, 3); 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,7 +39,6 @@
39 android:name="WEIBO_CHANNEL" 39 android:name="WEIBO_CHANNEL"
40 android:value="weibo" /> 40 android:value="weibo" />
41 41
42 - <activity android:name="com.cnlive.strike.moudle.user.ui.activity.MainTestActivity" />  
43 <activity 42 <activity
44 android:name=".ui.activity.LoginActivity" 43 android:name=".ui.activity.LoginActivity"
45 android:configChanges="keyboardHidden|screenSize|orientation|smallestScreenSize|screenLayout" 44 android:configChanges="keyboardHidden|screenSize|orientation|smallestScreenSize|screenLayout"
@@ -50,12 +49,6 @@ @@ -50,12 +49,6 @@
50 <action android:name="android.accounts.AccountAuthenticator" /> 49 <action android:name="android.accounts.AccountAuthenticator" />
51 </intent-filter> 50 </intent-filter>
52 </activity> 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 <activity 52 <activity
60 android:name=".ui.activity.FirstLoginActivity" 53 android:name=".ui.activity.FirstLoginActivity"
61 android:configChanges="keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation" 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,6 +27,9 @@ import androidx.core.app.ActivityCompat;
27 import androidx.core.content.ContextCompat; 27 import androidx.core.content.ContextCompat;
28 import androidx.fragment.app.Fragment; 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 * Created by Anton Bevza on 8/15/16. 34 * Created by Anton Bevza on 8/15/16.
32 */ 35 */
@@ -35,7 +38,7 @@ public class SmsVerifyCatcher { @@ -35,7 +38,7 @@ public class SmsVerifyCatcher {
35 public static int PERMISSION_REQUEST_CODE = 12; 38 public static int PERMISSION_REQUEST_CODE = 12;
36 39
37 private Activity activity; 40 private Activity activity;
38 - private Fragment fragment; 41 + private BaseFragment fragment;
39 private OnSmsCatchListener<String> onSmsCatchListener; 42 private OnSmsCatchListener<String> onSmsCatchListener;
40 private SmsReceiver smsReceiver; 43 private SmsReceiver smsReceiver;
41 private String phoneNumber; 44 private String phoneNumber;
@@ -49,13 +52,17 @@ public class SmsVerifyCatcher { @@ -49,13 +52,17 @@ public class SmsVerifyCatcher {
49 smsReceiver.setCallback(this.onSmsCatchListener); 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 this(activity, onSmsCatchListener); 56 this(activity, onSmsCatchListener);
54 this.fragment = fragment; 57 this.fragment = fragment;
  58 +
55 } 59 }
56 60
57 //For fragments 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 if (Build.VERSION.SDK_INT >= 23) { 66 if (Build.VERSION.SDK_INT >= 23) {
60 if (ContextCompat.checkSelfPermission(activity, Manifest.permission.RECEIVE_SMS) 67 if (ContextCompat.checkSelfPermission(activity, Manifest.permission.RECEIVE_SMS)
61 == PackageManager.PERMISSION_GRANTED && 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,6 +15,8 @@ import com.cnlive.core.libs.base.frame.fragment.BaseFragment;
15 import com.cnlive.core.libs.base.util.FragmentUtil; 15 import com.cnlive.core.libs.base.util.FragmentUtil;
16 import com.cnlive.strike.user.R; 16 import com.cnlive.strike.user.R;
17 import com.cnlive.strike.user.ui.fragment.QuickLoginFragment; 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 * @author Lynn 22 * @author Lynn
@@ -24,7 +26,6 @@ import com.cnlive.strike.user.ui.fragment.QuickLoginFragment; @@ -24,7 +26,6 @@ import com.cnlive.strike.user.ui.fragment.QuickLoginFragment;
24 @Route(path = LoginActivity.PATH) 26 @Route(path = LoginActivity.PATH)
25 public class LoginActivity extends BaseActivity { 27 public class LoginActivity extends BaseActivity {
26 public static final String PATH = "/cloud/user/ui/activity/login"; 28 public static final String PATH = "/cloud/user/ui/activity/login";
27 -  
28 public static String FROM_TOKEN_ERROR = "from_token_error"; 29 public static String FROM_TOKEN_ERROR = "from_token_error";
29 public static String TAG_MSG = "tagMsg"; 30 public static String TAG_MSG = "tagMsg";
30 public static String TAG_SHARE = "tagValue"; 31 public static String TAG_SHARE = "tagValue";
@@ -71,13 +72,17 @@ public class LoginActivity extends BaseActivity { @@ -71,13 +72,17 @@ public class LoginActivity extends BaseActivity {
71 context.startActivity(intent); 72 context.startActivity(intent);
72 } 73 }
73 74
74 -  
75 @Override 75 @Override
76 - protected void initView() { 76 + protected void initParam() {
  77 + super.initParam();
77 fromTokenError = getIntent().getBooleanExtra(FROM_TOKEN_ERROR, false); 78 fromTokenError = getIntent().getBooleanExtra(FROM_TOKEN_ERROR, false);
78 tagMsg = getIntent().getStringExtra(TAG_MSG) == null ? "" : getIntent().getStringExtra(TAG_MSG); 79 tagMsg = getIntent().getStringExtra(TAG_MSG) == null ? "" : getIntent().getStringExtra(TAG_MSG);
79 shareType = getIntent().getStringExtra(TAG_SHARE); 80 shareType = getIntent().getStringExtra(TAG_SHARE);
80 clickAd = getIntent().getBooleanExtra(TAG_CLICK_AD, false); 81 clickAd = getIntent().getBooleanExtra(TAG_CLICK_AD, false);
  82 + }
  83 +
  84 + @Override
  85 + protected void initView() {
81 addFragment(); 86 addFragment();
82 } 87 }
83 88
@@ -105,4 +110,5 @@ public class LoginActivity extends BaseActivity { @@ -105,4 +110,5 @@ public class LoginActivity extends BaseActivity {
105 if (quickLoginFragment != null) 110 if (quickLoginFragment != null)
106 quickLoginFragment.onRequestPermissionsResult(requestCode, permissions, grantResults); 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,6 +99,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
99 private final SwipeBackActivityDelegate mSwipeDelegate = new SwipeBackActivityDelegate(this); 99 private final SwipeBackActivityDelegate mSwipeDelegate = new SwipeBackActivityDelegate(this);
100 private boolean isDefinePermissionCloseActivity = false; 100 private boolean isDefinePermissionCloseActivity = false;
101 private boolean isUserClickAllowBtn = false;//用户是否点击允许按钮 101 private boolean isUserClickAllowBtn = false;//用户是否点击允许按钮
  102 + private boolean isShowRefuseDialog = true;//是否显示拒绝提示框
102 private String[] userSetPermission; 103 private String[] userSetPermission;
103 104
104 @Override 105 @Override
@@ -281,6 +282,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -281,6 +282,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
281 isUserClickAllowBtn = false; 282 isUserClickAllowBtn = false;
282 int requestCode = DEFAULT_REQUEST_CODE_PERMISSION; 283 int requestCode = DEFAULT_REQUEST_CODE_PERMISSION;
283 String tip = defaultDefinePermissionTip; 284 String tip = defaultDefinePermissionTip;
  285 + boolean isShowDialog = isShowRefuseDialog;
284 if (null != onPermissionResponseListener && null != userSetPermission) { 286 if (null != onPermissionResponseListener && null != userSetPermission) {
285 if (null != userSetDefinePermissionTip) { 287 if (null != userSetDefinePermissionTip) {
286 tip = userSetDefinePermissionTip; 288 tip = userSetDefinePermissionTip;
@@ -289,7 +291,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -289,7 +291,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
289 requestCode = USER_SET_REQUEST_CODE_PERMISSION; 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,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 * <p> 503 * <p>
@@ -491,6 +507,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -491,6 +507,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
491 * @param permissions 请求的权限 507 * @param permissions 请求的权限
492 * @param onPermissionResponseListener 回调监听器 508 * @param onPermissionResponseListener 回调监听器
493 */ 509 */
  510 +
494 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener 511 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
495 onPermissionResponseListener) { 512 onPermissionResponseListener) {
496 this.onPermissionResponseListener = onPermissionResponseListener; 513 this.onPermissionResponseListener = onPermissionResponseListener;
@@ -505,6 +522,21 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -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 * <p> 542 * <p>
@@ -514,6 +546,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -514,6 +546,7 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
514 * @param permissions 请求的权限 546 * @param permissions 请求的权限
515 * @param onPermissionResponseListener 回调监听器 547 * @param onPermissionResponseListener 回调监听器
516 */ 548 */
  549 +
517 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener 550 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
518 onPermissionResponseListener) { 551 onPermissionResponseListener) {
519 this.isDefinePermissionCloseActivity = isDefineActivity; 552 this.isDefinePermissionCloseActivity = isDefineActivity;
@@ -530,6 +563,23 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -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 * <p> 585 * <p>
@@ -553,6 +603,21 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -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,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,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,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,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 * 可传入string字符串 775 * 可传入string字符串
@@ -665,6 +794,23 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -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 * 可传入string字符串 816 * 可传入string字符串
@@ -688,6 +834,22 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -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,6 +879,13 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
717 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, 879 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
718 @NonNull int[] grantResults) { 880 @NonNull int[] grantResults) {
719 super.onRequestPermissionsResult(requestCode, permissions, grantResults); 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 if (requestCode == DEFAULT_REQUEST_CODE_PERMISSION) { 890 if (requestCode == DEFAULT_REQUEST_CODE_PERMISSION) {
722 if (verifyPermissions(grantResults)) { 891 if (verifyPermissions(grantResults)) {
@@ -727,7 +896,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -727,7 +896,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
727 if (onPermissionResponseListener != null) { 896 if (onPermissionResponseListener != null) {
728 onPermissionResponseListener.onFail(); 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,7 +918,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
740 if (onPermissionResponseListener != null) { 918 if (onPermissionResponseListener != null) {
741 onPermissionResponseListener.onFail(); 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 userSetDefinePermissionTip = ""; 933 userSetDefinePermissionTip = "";
@@ -812,16 +999,11 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V @@ -812,16 +999,11 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
812 .setNegativeButton("取消", new DialogInterface.OnClickListener() { 999 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
813 @Override 1000 @Override
814 public void onClick(DialogInterface dialog, int which) { 1001 public void onClick(DialogInterface dialog, int which) {
  1002 + isUserClickAllowBtn = false;
  1003 + isShowRefuseDialog = true;
815 if (isDefinePermissionCloseActivity) { 1004 if (isDefinePermissionCloseActivity) {
816 isDefinePermissionCloseActivity = false; 1005 isDefinePermissionCloseActivity = false;
817 - //先判断当前是否是多个activity  
818 -// if (null != getSupportFragmentManager().getFragments() && getSupportFragmentManager().getFragments().size() > 1) {  
819 -// //移除最上层的  
820 -// pop();  
821 -// } else {  
822 finish(); 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,6 +1179,10 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
997 mDelegate.loadRootFragment(R.id.root_container, toFragment); 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 * 加载根Fragment, 即Activity内的第一个Fragment 或 Fragment内的第一个子Fragment 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,6 +1193,16 @@ public abstract class BaseActivity&lt;V extends BaseView, P extends BasePresenter&lt;V
1007 mDelegate.loadRootFragment(containerId, toFragment); 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 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) { 1206 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) {
1011 mDelegate.loadRootFragment(containerId, toFragment, addToBackStack, allowAnimation); 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,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 * show一个Fragment,hide其他同栈所有Fragment 1225 * show一个Fragment,hide其他同栈所有Fragment
1023 * 使用该方法时,要确保同级栈内无多余的Fragment,(只有通过loadMultipleRootFragment()载入的Fragment) 1226 * 使用该方法时,要确保同级栈内无多余的Fragment,(只有通过loadMultipleRootFragment()载入的Fragment)
1024 * <p> 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,51 +268,95 @@ public abstract class BaseFragment&lt;V extends BaseView, P extends BasePresenter&lt;V
268 me.requestPermission(permissions, onPermissionResponseListener); 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 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) { 276 public void requestPermission(boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
273 me.requestPermission(isDefineActivity, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) { 285 public void requestPermission(int requestCode, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
278 me.requestPermission(requestCode, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) { 294 public void requestPermission(int requestCode, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
283 me.requestPermission(requestCode, isDefineActivity, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, String defineTip, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) { 303 public void requestPermission(int requestCode, String defineTip, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
288 me.requestPermission(requestCode, defineTip, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) { 312 public void requestPermission(int requestCode, String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener onPermissionResponseListener) {
293 me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, onPermissionResponseListener); 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 public void requestPermission(String defineTip, String[] permissions, OnPermissionResponseListener 320 public void requestPermission(String defineTip, String[] permissions, OnPermissionResponseListener
297 onPermissionResponseListener) { 321 onPermissionResponseListener) {
298 me.requestPermission(defineTip, permissions, onPermissionResponseListener); 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 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener 330 public void requestPermission(String defineTip, boolean isDefineActivity, String[] permissions, OnPermissionResponseListener
302 onPermissionResponseListener) { 331 onPermissionResponseListener) {
303 me.requestPermission(defineTip, isDefineActivity, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, @StringRes int defineTip, String[] 340 public void requestPermission(int requestCode, @StringRes int defineTip, String[]
307 permissions, OnPermissionResponseListener onPermissionResponseListener) { 341 permissions, OnPermissionResponseListener onPermissionResponseListener) {
308 me.requestPermission(requestCode, defineTip, permissions, onPermissionResponseListener); 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 public void requestPermission(int requestCode, @StringRes int defineTip, boolean isDefineActivity, String[] 350 public void requestPermission(int requestCode, @StringRes int defineTip, boolean isDefineActivity, String[]
312 permissions, OnPermissionResponseListener onPermissionResponseListener) { 351 permissions, OnPermissionResponseListener onPermissionResponseListener) {
313 me.requestPermission(requestCode, defineTip, isDefineActivity, permissions, onPermissionResponseListener); 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 public boolean checkPermissions(String[] permissions) { 361 public boolean checkPermissions(String[] permissions) {
318 return me.checkPermissions(permissions); 362 return me.checkPermissions(permissions);
core/base/src/main/java/com/me/yokeyword/fragmentation/SupportActivityDelegate.java
@@ -192,6 +192,10 @@ public class SupportActivityDelegate { @@ -192,6 +192,10 @@ public class SupportActivityDelegate {
192 loadRootFragment(containerId, toFragment, true, false); 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 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) { 199 public void loadRootFragment(int containerId, ISupportFragment toFragment, boolean addToBackStack, boolean allowAnimation) {
196 mTransactionDelegate.loadRootTransaction(getSupportFragmentManager(), containerId, toFragment, addToBackStack, allowAnimation); 200 mTransactionDelegate.loadRootTransaction(getSupportFragmentManager(), containerId, toFragment, addToBackStack, allowAnimation);
197 } 201 }