Skip to content

Commit 1371e28

Browse files
committed
fix: permissions for Android 14 again
mainly about foreground service permission Signed-off-by: qwq233 <qwq233@qwq2333.top>
1 parent 6c2be64 commit 1371e28

File tree

11 files changed

+200
-53
lines changed

11 files changed

+200
-53
lines changed

TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3694,7 +3694,7 @@ public void onAudioDevicesRemoved(AudioDeviceInfo[] removedDevices) {
36943694
bldr.setSmallIcon(R.drawable.ic_call);
36953695
}
36963696
if (Build.VERSION.SDK_INT >= VERSION_CODES.UPSIDE_DOWN_CAKE) {
3697-
if (PermissionUtils.isAudioPermissionGranted()) {
3697+
if (PermissionUtils.isRecordAudioPermissionGranted()) {
36983698
startForeground(ID_ONGOING_CALL_NOTIFICATION, bldr.build(),
36993699
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE | ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK | ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA);
37003700
}
@@ -4284,7 +4284,7 @@ private void showIncomingNotification(String name, TLObject userOrChat, boolean
42844284
incomingNotification = builder.getNotification();
42854285
}
42864286
if (Build.VERSION.SDK_INT >= VERSION_CODES.UPSIDE_DOWN_CAKE) {
4287-
if (PermissionUtils.isAudioPermissionGranted()) {
4287+
if (PermissionUtils.isRecordAudioPermissionGranted()) {
42884288
startForeground(ID_INCOMING_CALL_NOTIFICATION, incomingNotification,
42894289
ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE | ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK | ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA);
42904290
}
@@ -4528,7 +4528,7 @@ public void handleNotificationAction(Intent intent) {
45284528

45294529
private void acceptIncomingCallFromNotification() {
45304530
showNotification();
4531-
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT < Build.VERSION_CODES.R && (checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED || privateCall.video && checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)) {
4531+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT < Build.VERSION_CODES.R && (PermissionUtils.isRecordAudioPermissionGranted() || privateCall.video && PermissionUtils.isCameraPermissionGranted())) {
45324532
try {
45334533
//intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
45344534
PendingIntent.getActivity(VoIPService.this, 0, new Intent(VoIPService.this, VoIPPermissionActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_ONE_SHOT).send();

TMessagesProj/src/main/java/org/telegram/ui/BasePermissionsActivity.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.telegram.ui;
22

3-
import android.Manifest;
43
import android.app.Activity;
54
import android.content.Intent;
65
import android.content.pm.PackageManager;
@@ -22,6 +21,8 @@
2221
import org.telegram.ui.ActionBar.Theme;
2322
import org.telegram.ui.Components.AlertsCreator;
2423

24+
import top.qwq2333.nullgram.utils.PermissionUtils;
25+
2526
public class BasePermissionsActivity extends Activity {
2627
public final static int REQUEST_CODE_GEOLOCATION = 2,
2728
REQUEST_CODE_EXTERNAL_STORAGE = 4,
@@ -69,15 +70,8 @@ protected boolean checkPermissionsResult(int requestCode, String[] permissions,
6970
ContactsController.getInstance(currentAccount).forceImportContacts();
7071
}
7172
} else if (requestCode == 3 || requestCode == REQUEST_CODE_VIDEO_MESSAGE) {
72-
boolean audioGranted = true;
73-
boolean cameraGranted = true;
74-
for (int i = 0, size = Math.min(permissions.length, grantResults.length); i < size; i++) {
75-
if (Manifest.permission.RECORD_AUDIO.equals(permissions[i])) {
76-
audioGranted = grantResults[i] == PackageManager.PERMISSION_GRANTED;
77-
} else if (Manifest.permission.CAMERA.equals(permissions[i])) {
78-
cameraGranted = grantResults[i] == PackageManager.PERMISSION_GRANTED;
79-
}
80-
}
73+
boolean audioGranted = PermissionUtils.isRecordAudioPermissionGranted();
74+
boolean cameraGranted = PermissionUtils.isCameraPermissionGranted();
8175
if (requestCode == REQUEST_CODE_VIDEO_MESSAGE && (!audioGranted || !cameraGranted)) {
8276
showPermissionErrorAlert(R.raw.permission_request_camera, LocaleController.getString("PermissionNoCameraMicVideo", R.string.PermissionNoCameraMicVideo));
8377
} else if (!audioGranted) {

TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -204,17 +204,86 @@
204204
import org.telegram.ui.Cells.ShareDialogCell;
205205
import org.telegram.ui.Cells.StickerCell;
206206
import org.telegram.ui.Cells.TextSelectionHelper;
207-
import org.telegram.ui.Components.*;
207+
import org.telegram.ui.Components.AlertsCreator;
208+
import org.telegram.ui.Components.AnimatedEmojiDrawable;
209+
import org.telegram.ui.Components.AnimatedEmojiSpan;
210+
import org.telegram.ui.Components.AnimatedFileDrawable;
211+
import org.telegram.ui.Components.AnimationProperties;
212+
import org.telegram.ui.Components.AttachBotIntroTopView;
213+
import org.telegram.ui.Components.AudioPlayerAlert;
214+
import org.telegram.ui.Components.AutoDeletePopupWrapper;
215+
import org.telegram.ui.Components.BackButtonMenu;
216+
import org.telegram.ui.Components.BackupImageView;
217+
import org.telegram.ui.Components.BlurBehindDrawable;
218+
import org.telegram.ui.Components.BluredView;
219+
import org.telegram.ui.Components.BlurredFrameLayout;
220+
import org.telegram.ui.Components.BotCommandsMenuView;
221+
import org.telegram.ui.Components.BotWebViewSheet;
222+
import org.telegram.ui.Components.Bulletin;
223+
import org.telegram.ui.Components.BulletinFactory;
224+
import org.telegram.ui.Components.ChatActivityEnterTopView;
225+
import org.telegram.ui.Components.ChatActivityEnterView;
226+
import org.telegram.ui.Components.ChatActivityInterface;
227+
import org.telegram.ui.Components.ChatAttachAlert;
228+
import org.telegram.ui.Components.ChatAttachAlertDocumentLayout;
229+
import org.telegram.ui.Components.ChatAvatarContainer;
230+
import org.telegram.ui.Components.ChatBigEmptyView;
231+
import org.telegram.ui.Components.ChatGreetingsView;
232+
import org.telegram.ui.Components.ChatNotificationsPopupWrapper;
233+
import org.telegram.ui.Components.ChatScrimPopupContainerLayout;
234+
import org.telegram.ui.Components.ChatThemeBottomSheet;
235+
import org.telegram.ui.Components.ChecksHintView;
236+
import org.telegram.ui.Components.CircularProgressDrawable;
237+
import org.telegram.ui.Components.ClippingImageView;
238+
import org.telegram.ui.Components.CombinedDrawable;
239+
import org.telegram.ui.Components.CounterView;
240+
import org.telegram.ui.Components.CrossfadeDrawable;
241+
import org.telegram.ui.Components.CubicBezierInterpolator;
242+
import org.telegram.ui.Components.EditTextBoldCursor;
243+
import org.telegram.ui.Components.EditTextCaption;
244+
import org.telegram.ui.Components.EmbedBottomSheet;
245+
import org.telegram.ui.Components.EmojiPacksAlert;
246+
import org.telegram.ui.Components.EmojiView;
247+
import org.telegram.ui.Components.ExtendedGridLayoutManager;
248+
import org.telegram.ui.Components.FireworksOverlay;
208249
import org.telegram.ui.Components.FloatingDebug.FloatingDebugController;
209250
import org.telegram.ui.Components.FloatingDebug.FloatingDebugProvider;
210251
import org.telegram.ui.Components.Forum.ForumUtilities;
252+
import org.telegram.ui.Components.FragmentContextView;
253+
import org.telegram.ui.Components.GigagroupConvertAlert;
254+
import org.telegram.ui.Components.HideViewAfterAnimation;
255+
import org.telegram.ui.Components.HintView;
256+
import org.telegram.ui.Components.ImageUpdater;
257+
import org.telegram.ui.Components.ImportingAlert;
258+
import org.telegram.ui.Components.InstantCameraView;
259+
import org.telegram.ui.Components.InviteMembersBottomSheet;
260+
import org.telegram.ui.Components.JoinGroupAlert;
261+
import org.telegram.ui.Components.LayoutHelper;
262+
import org.telegram.ui.Components.LinkSpanDrawable;
263+
import org.telegram.ui.Components.MediaActivity;
264+
import org.telegram.ui.Components.MentionsContainerView;
265+
import org.telegram.ui.Components.MessageBackgroundDrawable;
266+
import org.telegram.ui.Components.MessageContainsEmojiButton;
267+
import org.telegram.ui.Components.MessagePreviewView;
268+
import org.telegram.ui.Components.MotionBackgroundDrawable;
269+
import org.telegram.ui.Components.NumberTextView;
270+
import org.telegram.ui.Components.PhonebookShareAlert;
271+
import org.telegram.ui.Components.PinnedLineView;
272+
import org.telegram.ui.Components.PipRoundVideoView;
273+
import org.telegram.ui.Components.PollVotesAlert;
274+
import org.telegram.ui.Components.PopupSwipeBackLayout;
211275
import org.telegram.ui.Components.Premium.GiftPremiumBottomSheet;
212-
import org.telegram.ui.Components.Premium.LimitReachedBottomSheet;
213276
import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet;
214277
import org.telegram.ui.Components.Premium.PremiumPreviewBottomSheet;
215278
import org.telegram.ui.Components.Premium.boosts.BoostDialogs;
216279
import org.telegram.ui.Components.Premium.boosts.GiftInfoBottomSheet;
217280
import org.telegram.ui.Components.Premium.boosts.PremiumPreviewGiftLinkBottomSheet;
281+
import org.telegram.ui.Components.RLottieDrawable;
282+
import org.telegram.ui.Components.RLottieImageView;
283+
import org.telegram.ui.Components.RadialProgressView;
284+
import org.telegram.ui.Components.ReactedHeaderView;
285+
import org.telegram.ui.Components.ReactedUsersListView;
286+
import org.telegram.ui.Components.ReactionTabHolderView;
218287
import org.telegram.ui.Components.Reactions.ChatSelectionReactionMenuOverlay;
219288
import org.telegram.ui.Components.Reactions.ReactionsEffectOverlay;
220289
import org.telegram.ui.Components.Reactions.ReactionsLayoutInBubble;
@@ -230,6 +299,7 @@
230299
import org.telegram.ui.Components.SuggestEmojiView;
231300
import org.telegram.ui.Components.TextSelectionHint;
232301
import org.telegram.ui.Components.TextStyleSpan;
302+
import org.telegram.ui.Components.ThanosEffect;
233303
import org.telegram.ui.Components.ThemeEditorView;
234304
import org.telegram.ui.Components.TranscribeButton;
235305
import org.telegram.ui.Components.TranslateAlert2;
@@ -247,7 +317,6 @@
247317
import org.telegram.ui.Components.voip.CellFlickerDrawable;
248318
import org.telegram.ui.Components.voip.VoIPHelper;
249319
import org.telegram.ui.Delegates.ChatActivityMemberRequestsDelegate;
250-
import org.telegram.ui.Stories.DialogStoriesCell;
251320
import org.telegram.ui.Stories.StoriesListPlaceProvider;
252321
import org.telegram.ui.Stories.StoriesUtilities;
253322
import org.telegram.ui.Stories.recorder.PreviewView;
@@ -10257,9 +10326,8 @@ public boolean playFirstUnreadVoiceMessage() {
1025710326
}
1025810327
}
1025910328
if (Build.VERSION.SDK_INT >= 23 && getParentActivity() != null) {
10260-
if (getParentActivity().checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
10261-
getParentActivity().requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 3);
10262-
return true;
10329+
if (PermissionUtils.isRecordAudioPermissionGranted()) {
10330+
PermissionUtils.requestRecordAudioPermission(getParentActivity());
1026310331
}
1026410332
}
1026510333
return false;

TMessagesProj/src/main/java/org/telegram/ui/Components/BotWebViewContainer.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.telegram.ui.Components;
22

33
import android.Manifest;
4+
import android.Manifest.permission;
45
import android.animation.Animator;
56
import android.animation.AnimatorListenerAdapter;
67
import android.animation.AnimatorSet;
@@ -422,12 +423,18 @@ public void onPermissionRequest(PermissionRequest request) {
422423

423424
switch (resource) {
424425
case PermissionRequest.RESOURCE_AUDIO_CAPTURE: {
425-
lastPermissionsDialog = AlertsCreator.createWebViewPermissionsRequestDialog(parentActivity, resourcesProvider, new String[] {Manifest.permission.RECORD_AUDIO}, R.raw.permission_request_microphone, LocaleController.formatString(R.string.BotWebViewRequestMicrophonePermission, UserObject.getUserName(botUser)), LocaleController.formatString(R.string.BotWebViewRequestMicrophonePermissionWithHint, UserObject.getUserName(botUser)), allow -> {
426+
String[] permissions;
427+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
428+
permissions = new String[] {Manifest.permission.RECORD_AUDIO, permission.FOREGROUND_SERVICE_MICROPHONE};
429+
} else {
430+
permissions = new String[] {Manifest.permission.RECORD_AUDIO};
431+
}
432+
lastPermissionsDialog = AlertsCreator.createWebViewPermissionsRequestDialog(parentActivity, resourcesProvider, permissions, R.raw.permission_request_microphone, LocaleController.formatString(R.string.BotWebViewRequestMicrophonePermission, UserObject.getUserName(botUser)), LocaleController.formatString(R.string.BotWebViewRequestMicrophonePermissionWithHint, UserObject.getUserName(botUser)), allow -> {
426433
if (lastPermissionsDialog != null) {
427434
lastPermissionsDialog = null;
428435

429436
if (allow) {
430-
runWithPermissions(new String[] {Manifest.permission.RECORD_AUDIO}, allowSystem -> {
437+
runWithPermissions(permissions, allowSystem -> {
431438
if (allowSystem) {
432439
request.grant(new String[] {resource});
433440
hasUserPermissions = true;
@@ -471,12 +478,18 @@ public void onPermissionRequest(PermissionRequest request) {
471478
(PermissionRequest.RESOURCE_AUDIO_CAPTURE.equals(resources[0]) || PermissionRequest.RESOURCE_VIDEO_CAPTURE.equals(resources[0])) &&
472479
(PermissionRequest.RESOURCE_AUDIO_CAPTURE.equals(resources[1]) || PermissionRequest.RESOURCE_VIDEO_CAPTURE.equals(resources[1]))
473480
) {
474-
lastPermissionsDialog = AlertsCreator.createWebViewPermissionsRequestDialog(parentActivity, resourcesProvider, new String[] {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, R.raw.permission_request_camera, LocaleController.formatString(R.string.BotWebViewRequestCameraMicPermission, UserObject.getUserName(botUser)), LocaleController.formatString(R.string.BotWebViewRequestCameraMicPermissionWithHint, UserObject.getUserName(botUser)), allow -> {
481+
String[] permissions;
482+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
483+
permissions = new String[] {Manifest.permission.RECORD_AUDIO, permission.FOREGROUND_SERVICE_MICROPHONE, Manifest.permission.CAMERA, permission.FOREGROUND_SERVICE_CAMERA};
484+
} else {
485+
permissions = new String[] {Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA};
486+
}
487+
lastPermissionsDialog = AlertsCreator.createWebViewPermissionsRequestDialog(parentActivity, resourcesProvider, permissions, R.raw.permission_request_camera, LocaleController.formatString(R.string.BotWebViewRequestCameraMicPermission, UserObject.getUserName(botUser)), LocaleController.formatString(R.string.BotWebViewRequestCameraMicPermissionWithHint, UserObject.getUserName(botUser)), allow -> {
475488
if (lastPermissionsDialog != null) {
476489
lastPermissionsDialog = null;
477490

478491
if (allow) {
479-
runWithPermissions(new String[] {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}, allowSystem -> {
492+
runWithPermissions(permissions, allowSystem -> {
480493
if (allowSystem) {
481494
request.grant(new String[] {resources[0], resources[1]});
482495
hasUserPermissions = true;

TMessagesProj/src/main/java/org/telegram/ui/Components/ChatActivityEnterView.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@
148148
import org.telegram.ui.ActionBar.BottomSheet;
149149
import org.telegram.ui.ActionBar.SimpleTextView;
150150
import org.telegram.ui.ActionBar.Theme;
151-
import org.telegram.ui.BasePermissionsActivity;
152151
import org.telegram.ui.ChatActivity;
153152
import org.telegram.ui.Components.Premium.GiftPremiumBottomSheet;
154153
import org.telegram.ui.Components.Premium.PremiumFeatureBottomSheet;
@@ -173,6 +172,7 @@
173172
import java.util.Locale;
174173

175174
import top.qwq2333.gen.Config;
175+
import top.qwq2333.nullgram.utils.PermissionUtils;
176176

177177
public class ChatActivityEnterView extends BlurredFrameLayout implements NotificationCenter.NotificationCenterDelegate, SizeNotifierFrameLayout.SizeNotifierFrameLayoutDelegate, StickersAlert.StickersAlertDelegate {
178178

@@ -759,19 +759,11 @@ public void run() {
759759
audioToSend = null;
760760
if (isInVideoMode()) {
761761
if (Build.VERSION.SDK_INT >= 23) {
762-
boolean hasAudio = parentActivity.checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
763-
boolean hasVideo = parentActivity.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED;
762+
boolean hasAudio = PermissionUtils.isRecordAudioPermissionGranted();
763+
boolean hasVideo = PermissionUtils.isCameraPermissionGranted();
764764
if (!hasAudio || !hasVideo) {
765-
String[] permissions = new String[!hasAudio && !hasVideo ? 2 : 1];
766-
if (!hasAudio && !hasVideo) {
767-
permissions[0] = Manifest.permission.RECORD_AUDIO;
768-
permissions[1] = Manifest.permission.CAMERA;
769-
} else if (!hasAudio) {
770-
permissions[0] = Manifest.permission.RECORD_AUDIO;
771-
} else {
772-
permissions[0] = Manifest.permission.CAMERA;
773-
}
774-
parentActivity.requestPermissions(permissions, BasePermissionsActivity.REQUEST_CODE_VIDEO_MESSAGE);
765+
if (!hasAudio) PermissionUtils.requestRecordAudioPermission(parentActivity);
766+
if (!hasVideo) PermissionUtils.requestCameraPermission(parentActivity);
775767
return;
776768
}
777769
}
@@ -791,8 +783,8 @@ public void run() {
791783
}
792784
}
793785
} else {
794-
if (Build.VERSION.SDK_INT >= 23 && parentActivity.checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
795-
parentActivity.requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 3);
786+
if (PermissionUtils.isRecordAudioPermissionGranted()) {
787+
PermissionUtils.requestRecordAudioPermission(parentActivity);
796788
return;
797789
}
798790

TMessagesProj/src/main/java/org/telegram/ui/Components/ChatAttachAlertPhotoLayout.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import static android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
1212

1313
import android.Manifest;
14+
import android.Manifest.permission;
1415
import android.animation.Animator;
1516
import android.animation.AnimatorListenerAdapter;
1617
import android.animation.AnimatorSet;
@@ -1067,9 +1068,15 @@ public boolean shutterLongPressed() {
10671068
return false;
10681069
}
10691070
if (Build.VERSION.SDK_INT >= 23) {
1070-
if (getContext().checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
1071+
if (PermissionUtils.isRecordAudioPermissionGranted()) {
10711072
requestingPermissions = true;
1072-
baseFragment.getParentActivity().requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 21);
1073+
String[] permissions;
1074+
if (Build.VERSION.SDK_INT >= 34) {
1075+
permissions = new String[]{Manifest.permission.RECORD_AUDIO, permission.FOREGROUND_SERVICE_MICROPHONE};
1076+
} else {
1077+
permissions = new String[]{Manifest.permission.RECORD_AUDIO};
1078+
}
1079+
baseFragment.getParentActivity().requestPermissions(permissions, 21);
10731080
return false;
10741081
}
10751082
}

0 commit comments

Comments
 (0)