mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 04:58:45 +00:00
Update microphone permission UI for calls.
This commit is contained in:
committed by
Greyson Parrelli
parent
c5c0c432c4
commit
fd4864b3b1
@@ -19,6 +19,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.core.app.TaskStackBuilder;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
|
||||
@@ -26,8 +27,6 @@ import org.signal.core.util.concurrent.RxExtensions;
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.concurrent.SimpleTask;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.signal.libsignal.usernames.BaseUsernameException;
|
||||
import org.signal.libsignal.usernames.Username;
|
||||
import org.signal.ringrtc.CallLinkRootKey;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.WebRtcCallActivity;
|
||||
@@ -44,16 +43,13 @@ import org.thoughtcrime.securesms.groups.ui.invitesandrequests.joining.GroupJoin
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository;
|
||||
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameAciFetchResult;
|
||||
import org.thoughtcrime.securesms.profiles.manage.UsernameRepository.UsernameLinkConversionResult;
|
||||
import org.thoughtcrime.securesms.proxy.ProxyBottomSheetFragment;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.service.webrtc.links.CallLinkRoomId;
|
||||
import org.thoughtcrime.securesms.sms.MessageSender;
|
||||
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
|
||||
import org.whispersystems.signalservice.api.push.ServiceId;
|
||||
import org.whispersystems.signalservice.api.push.UsernameLinkComponents;
|
||||
import org.whispersystems.signalservice.internal.storage.protos.AccountRecord;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
@@ -74,7 +70,7 @@ public class CommunicationActions {
|
||||
/**
|
||||
* Start a voice call. Assumes that permission request results will be routed to a handler on the Activity.
|
||||
*/
|
||||
public static void startVoiceCall(@NonNull Activity activity, @NonNull Recipient recipient) {
|
||||
public static void startVoiceCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
|
||||
startVoiceCall(new ActivityCallContext(activity), recipient);
|
||||
}
|
||||
|
||||
@@ -118,7 +114,7 @@ public class CommunicationActions {
|
||||
/**
|
||||
* Start a video call. Assumes that permission request results will be routed to a handler on the Activity.
|
||||
*/
|
||||
public static void startVideoCall(@NonNull Activity activity, @NonNull Recipient recipient) {
|
||||
public static void startVideoCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
|
||||
startVideoCall(new ActivityCallContext(activity), recipient, false);
|
||||
}
|
||||
|
||||
@@ -172,7 +168,7 @@ public class CommunicationActions {
|
||||
}.execute();
|
||||
}
|
||||
|
||||
public static void startInsecureCall(@NonNull Activity activity, @NonNull Recipient recipient) {
|
||||
public static void startInsecureCall(@NonNull FragmentActivity activity, @NonNull Recipient recipient) {
|
||||
startInsecureCall(new ActivityCallContext(activity), recipient);
|
||||
}
|
||||
|
||||
@@ -392,9 +388,9 @@ public class CommunicationActions {
|
||||
callContext.getPermissionsBuilder()
|
||||
.request(Manifest.permission.RECORD_AUDIO)
|
||||
.ifNecessary()
|
||||
.withRationaleDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_s_signal_needs_access_to_your_microphone, recipient.getDisplayName(callContext.getContext())),
|
||||
R.drawable.ic_mic_solid_24)
|
||||
.withPermanentDenialDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_s_signal_needs_access_to_your_microphone, recipient.getDisplayName(callContext.getContext())))
|
||||
.withRationaleDialog(callContext.getContext().getString(R.string.ConversationActivity_allow_access_microphone), callContext.getContext().getString(R.string.ConversationActivity__to_call_signal_needs_access_to_your_microphone), R.drawable.symbol_phone_24)
|
||||
.withPermanentDenialDialog(callContext.getContext().getString(R.string.ConversationActivity__to_call_signal_needs_access_to_your_microphone), null, R.string.ConversationActivity_allow_access_microphone, R.string.ConversationActivity__to_start_call, callContext.getFragmentManager())
|
||||
.onAnyDenied(() -> Toast.makeText(callContext.getContext(), R.string.ConversationActivity_signal_needs_microphone_access_voice_call, Toast.LENGTH_LONG).show())
|
||||
.onAllGranted(() -> {
|
||||
ApplicationDependencies.getSignalCallManager().startOutgoingAudioCall(recipient);
|
||||
|
||||
@@ -496,12 +492,13 @@ public class CommunicationActions {
|
||||
@NonNull Permissions.PermissionsBuilder getPermissionsBuilder();
|
||||
void startActivity(@NonNull Intent intent);
|
||||
@NonNull Context getContext();
|
||||
@NonNull FragmentManager getFragmentManager();
|
||||
}
|
||||
|
||||
private static class ActivityCallContext implements CallContext {
|
||||
private final Activity activity;
|
||||
private final FragmentActivity activity;
|
||||
|
||||
private ActivityCallContext(Activity activity) {
|
||||
private ActivityCallContext(FragmentActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@@ -519,6 +516,11 @@ public class CommunicationActions {
|
||||
public @NonNull Context getContext() {
|
||||
return activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull FragmentManager getFragmentManager() {
|
||||
return activity.getSupportFragmentManager();
|
||||
}
|
||||
}
|
||||
|
||||
private static class FragmentCallContext implements CallContext {
|
||||
@@ -542,5 +544,10 @@ public class CommunicationActions {
|
||||
public @NonNull Context getContext() {
|
||||
return fragment.requireContext();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull FragmentManager getFragmentManager() {
|
||||
return fragment.getParentFragmentManager();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,7 +429,13 @@
|
||||
<string name="ConversationActivity_you_will_leave_this_group_and_it_will_be_deleted_from_all_of_your_devices">You will leave this group, and it will be deleted from all your devices.</string>
|
||||
<string name="ConversationActivity_delete">Delete</string>
|
||||
<string name="ConversationActivity_delete_and_leave">Delete and leave</string>
|
||||
<string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone">To call %1$s, Signal needs access to your microphone</string>
|
||||
|
||||
<!-- Dialog description that will explain the steps needed to give microphone permissions for a voice call -->
|
||||
<string name="ConversationActivity__to_start_call">To start a call:</string>
|
||||
<!-- Alert dialog description asking for microphone permission in order to start a voice call -->
|
||||
<string name="ConversationActivity__to_call_signal_needs_access_to_your_microphone">To start a call, allow Signal access to your microphone.</string>
|
||||
<!-- Toast text explaining Signal's need for microphone access for a voice call -->
|
||||
<string name="ConversationActivity_signal_needs_microphone_access_voice_call">Signal needs microphone access to start a call.</string>
|
||||
|
||||
|
||||
<string name="ConversationActivity_join">Join</string>
|
||||
|
||||
Reference in New Issue
Block a user