From 76571ff16f3bdf3283c0309bfe45e4034222e8f6 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Mon, 11 Dec 2017 01:36:09 +0100 Subject: [PATCH] Improve asking for permissions Signed-off-by: Mario Danic --- .../talk/controllers/CallsListController.java | 34 ++++++++++++++----- .../talk/controllers/ContactsController.java | 31 ++++++++++++----- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java index 388138b35..0f18b18d8 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java @@ -20,6 +20,7 @@ package com.nextcloud.talk.controllers; +import android.Manifest; import android.app.SearchManager; import android.content.Context; import android.content.Intent; @@ -82,6 +83,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; +import ru.alexbykov.nopermission.PermissionHelper; @AutoInjector(NextcloudTalkApplication.class) public class CallsListController extends BaseController implements SearchView.OnQueryTextListener, @@ -388,15 +390,29 @@ public class CallsListController extends BaseController implements SearchView.On @Override public boolean onItemClick(int position) { if (callItems.size() > position) { - overridePushHandler(new NoOpControllerChangeHandler()); - overridePopHandler(new NoOpControllerChangeHandler()); - CallItem callItem = callItems.get(position); - Intent callIntent = new Intent(getActivity(), CallActivity.class); - BundleBuilder bundleBuilder = new BundleBuilder(new Bundle()); - bundleBuilder.putString("roomToken", callItem.getModel().getToken()); - bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity)); - callIntent.putExtras(bundleBuilder.build()); - startActivity(callIntent); + + PermissionHelper permissionHelper = new PermissionHelper(getActivity()); + permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO) + .onSuccess(new Runnable() { + @Override + public void run() { + overridePushHandler(new NoOpControllerChangeHandler()); + overridePopHandler(new NoOpControllerChangeHandler()); + CallItem callItem = callItems.get(position); + Intent callIntent = new Intent(getActivity(), CallActivity.class); + BundleBuilder bundleBuilder = new BundleBuilder(new Bundle()); + bundleBuilder.putString("roomToken", callItem.getModel().getToken()); + bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity)); + callIntent.putExtras(bundleBuilder.build()); + startActivity(callIntent); + } + }) + .onDenied(new Runnable() { + @Override + public void run() { + } + }) + .run(); } return true; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index 59f063df0..8ee213bab 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -20,6 +20,7 @@ package com.nextcloud.talk.controllers; +import android.Manifest; import android.app.SearchManager; import android.content.Context; import android.content.Intent; @@ -85,6 +86,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import retrofit2.HttpException; +import ru.alexbykov.nopermission.PermissionHelper; @AutoInjector(NextcloudTalkApplication.class) public class ContactsController extends BaseController implements SearchView.OnQueryTextListener, @@ -455,14 +457,27 @@ public class ContactsController extends BaseController implements SearchView.OnQ @Override public void onNext(RoomOverall roomOverall) { - overridePushHandler(new NoOpControllerChangeHandler()); - overridePopHandler(new NoOpControllerChangeHandler()); - Intent callIntent = new Intent(getActivity(), CallActivity.class); - BundleBuilder bundleBuilder = new BundleBuilder(new Bundle()); - bundleBuilder.putString("roomToken", roomOverall.getOcs().getData().getToken()); - bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity)); - callIntent.putExtras(bundleBuilder.build()); - startActivity(callIntent); + PermissionHelper permissionHelper = new PermissionHelper(getActivity()); + permissionHelper.check(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO) + .onSuccess(new Runnable() { + @Override + public void run() { + overridePushHandler(new NoOpControllerChangeHandler()); + overridePopHandler(new NoOpControllerChangeHandler()); + Intent callIntent = new Intent(getActivity(), CallActivity.class); + BundleBuilder bundleBuilder = new BundleBuilder(new Bundle()); + bundleBuilder.putString("roomToken", roomOverall.getOcs().getData().getToken()); + bundleBuilder.putParcelable("userEntity", Parcels.wrap(userEntity)); + callIntent.putExtras(bundleBuilder.build()); + startActivity(callIntent); + } + }) + .onDenied(new Runnable() { + @Override + public void run() { + } + }) + .run(); } @Override