Skip to content

Commit ad8813d

Browse files
committed
Move permission request to fragment
1 parent 40df55e commit ad8813d

File tree

3 files changed

+56
-86
lines changed

3 files changed

+56
-86
lines changed

qiscus-sdk/src/main/java/com/qiscus/sdk/ui/QiscusActivity.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

qiscus-sdk/src/main/java/com/qiscus/sdk/ui/QiscusChatActivity.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@
3232
import com.qiscus.sdk.data.model.QiscusChatConfig;
3333
import com.qiscus.sdk.data.model.QiscusChatRoom;
3434
import com.qiscus.sdk.ui.fragment.QiscusChatFragment;
35+
import com.trello.rxlifecycle.components.support.RxAppCompatActivity;
3536

36-
public class QiscusChatActivity extends QiscusActivity {
37+
public class QiscusChatActivity extends RxAppCompatActivity {
3738
private static final String CHAT_ROOM_DATA = "chat_room_data";
3839

3940
protected Toolbar toolbar;
@@ -67,13 +68,9 @@ protected void onCreate(Bundle savedInstanceState) {
6768
onViewReady(savedInstanceState);
6869
}
6970

70-
@Override
7171
protected void onViewReady(Bundle savedInstanceState) {
7272
resolveChatRoom(savedInstanceState);
7373

74-
requestStoragePermission();
75-
requestAudioRecordPermission();
76-
7774
applyChatConfig();
7875

7976
tvTitle.setText(qiscusChatRoom.getName());

qiscus-sdk/src/main/java/com/qiscus/sdk/ui/fragment/QiscusBaseChatFragment.java

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
import java.io.IOException;
6565
import java.util.List;
6666

67+
import pub.devrel.easypermissions.EasyPermissions;
68+
6769

6870
/**
6971
* Created on : September 28, 2016
@@ -74,7 +76,19 @@
7476
* LinkedIn : https://id.linkedin.com/in/zetbaitsu
7577
*/
7678
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+
7892
protected static final String CHAT_ROOM_DATA = "chat_room_data";
7993
protected static final int TAKE_PICTURE_REQUEST = 1;
8094
protected static final int PICK_IMAGE_REQUEST = 2;
@@ -224,6 +238,7 @@ public void afterTextChanged(Editable s) {
224238
@Override
225239
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
226240
super.onActivityCreated(savedInstanceState);
241+
requestPermissions();
227242
onCreateChatComponents(savedInstanceState);
228243
}
229244

@@ -636,4 +651,42 @@ public void onDestroyView() {
636651
}
637652
qiscusChatPresenter.detachView();
638653
}
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+
}
639692
}

0 commit comments

Comments
 (0)