|
64 | 64 | import java.io.IOException;
|
65 | 65 | import java.util.List;
|
66 | 66 |
|
| 67 | +import pub.devrel.easypermissions.EasyPermissions; |
| 68 | + |
67 | 69 |
|
68 | 70 | /**
|
69 | 71 | * Created on : September 28, 2016
|
|
74 | 76 | * LinkedIn : https://id.linkedin.com/in/zetbaitsu
|
75 | 77 | */
|
76 | 78 | public abstract class QiscusBaseChatFragment<Adapter extends QiscusBaseChatAdapter> extends RxFragment
|
77 |
| - implements SwipeRefreshLayout.OnRefreshListener, QiscusChatScrollListener.Listener, QiscusChatPresenter.View, QiscusAudioRecorderView.RecordListener { |
| 79 | + implements SwipeRefreshLayout.OnRefreshListener, QiscusChatScrollListener.Listener, |
| 80 | + QiscusChatPresenter.View, QiscusAudioRecorderView.RecordListener, EasyPermissions.PermissionCallbacks { |
| 81 | + |
| 82 | + protected static final int RC_PERMISSIONS = 1; |
| 83 | + protected static final int RC_STORAGE_PERMISSION = 2; |
| 84 | + protected static final int RC_RECORD_AUDIO_PERMISSION = 3; |
| 85 | + |
| 86 | + private static final String[] PERMISSIONS = { |
| 87 | + "android.permission.WRITE_EXTERNAL_STORAGE", |
| 88 | + "android.permission.READ_EXTERNAL_STORAGE", |
| 89 | + "android.permission.RECORD_AUDIO" |
| 90 | + }; |
| 91 | + |
78 | 92 | protected static final String CHAT_ROOM_DATA = "chat_room_data";
|
79 | 93 | protected static final int TAKE_PICTURE_REQUEST = 1;
|
80 | 94 | protected static final int PICK_IMAGE_REQUEST = 2;
|
@@ -224,6 +238,7 @@ public void afterTextChanged(Editable s) {
|
224 | 238 | @Override
|
225 | 239 | public void onActivityCreated(@Nullable Bundle savedInstanceState) {
|
226 | 240 | super.onActivityCreated(savedInstanceState);
|
| 241 | + requestPermissions(); |
227 | 242 | onCreateChatComponents(savedInstanceState);
|
228 | 243 | }
|
229 | 244 |
|
@@ -636,4 +651,42 @@ public void onDestroyView() {
|
636 | 651 | }
|
637 | 652 | qiscusChatPresenter.detachView();
|
638 | 653 | }
|
| 654 | + |
| 655 | + protected void requestPermissions() { |
| 656 | + if (!EasyPermissions.hasPermissions(getActivity(), PERMISSIONS)) { |
| 657 | + EasyPermissions.requestPermissions(this, "Please grant permissions to make apps working properly!", |
| 658 | + RC_PERMISSIONS, PERMISSIONS); |
| 659 | + } |
| 660 | + } |
| 661 | + |
| 662 | + protected void requestStoragePermission() { |
| 663 | + if (!EasyPermissions.hasPermissions(getActivity(), PERMISSIONS[0], PERMISSIONS[1])) { |
| 664 | + EasyPermissions.requestPermissions(this, "To make this apps working properly we need to access external storage to save your chatting data. " + |
| 665 | + "So please allow the apps to access the storage!", |
| 666 | + RC_STORAGE_PERMISSION, PERMISSIONS[0], PERMISSIONS[1]); |
| 667 | + } |
| 668 | + } |
| 669 | + |
| 670 | + protected void requestAudioRecordPermission() { |
| 671 | + if (!EasyPermissions.hasPermissions(getActivity(), PERMISSIONS[3])) { |
| 672 | + EasyPermissions.requestPermissions(this, "We need your permission to record audio to able send audio message!", |
| 673 | + RC_RECORD_AUDIO_PERMISSION, PERMISSIONS[3]); |
| 674 | + } |
| 675 | + } |
| 676 | + |
| 677 | + @Override |
| 678 | + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { |
| 679 | + super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
| 680 | + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); |
| 681 | + } |
| 682 | + |
| 683 | + @Override |
| 684 | + public void onPermissionsGranted(int requestCode, List<String> perms) { |
| 685 | + |
| 686 | + } |
| 687 | + |
| 688 | + @Override |
| 689 | + public void onPermissionsDenied(int requestCode, List<String> perms) { |
| 690 | + EasyPermissions.checkDeniedPermissionsNeverAskAgain(this, "Please grant permissions to make apps working properly!", R.string.ok, R.string.cancel, perms); |
| 691 | + } |
639 | 692 | }
|
0 commit comments