Commit a1ebbd54720b86967663299989803225f2e430e4
1 parent
b7f8e6f8
1 优化基类权限申请逻辑
Showing
8 changed files
with
301 additions
and
41 deletions
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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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<V extends BaseView, P extends BasePresenter<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 | } | ... | ... |