Skip to content

Commit a99e27d

Browse files
Merge pull request #840 from session-foundation/release/1.20.8
Merge Release/1.20.8 back into master
2 parents 5053daf + da3b07f commit a99e27d

File tree

16 files changed

+294
-277
lines changed

16 files changed

+294
-277
lines changed

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ configurations.forEach {
1313
it.exclude module: "commons-logging"
1414
}
1515

16-
def canonicalVersionCode = 389
17-
def canonicalVersionName = "1.20.7"
16+
def canonicalVersionCode = 390
17+
def canonicalVersionName = "1.20.8"
1818

1919
def postFixSize = 10
2020
def abiPostFix = ['armeabi-v7a' : 1,
@@ -299,7 +299,7 @@ dependencies {
299299
implementation 'androidx.media3:media3-ui:1.4.0'
300300
implementation 'org.conscrypt:conscrypt-android:2.5.2'
301301
implementation 'org.signal:aesgcmprovider:0.0.3'
302-
implementation 'io.github.webrtc-sdk:android:125.6422.04'
302+
implementation 'io.github.webrtc-sdk:android:125.6422.06.1'
303303
implementation "me.leolin:ShortcutBadger:1.1.16"
304304
implementation 'se.emilsjolander:stickylistheaders:2.7.0'
305305
implementation 'com.jpardogo.materialtabstrip:library:1.0.9'

app/src/main/AndroidManifest.xml

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,49 @@
2929
android:name="android.hardware.touchscreen"
3030
android:required="false" />
3131

32-
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
32+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3333
<uses-permission android:name="android.permission.BLUETOOTH" />
3434
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
35+
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
36+
<uses-permission android:name="android.permission.CAMERA" />
37+
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" tools:node="remove" />
38+
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
3539
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
36-
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
37-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
40+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" /> <!-- For video calls -->
41+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> <!-- For calls that get audio from bluetooth headsets -->
3842
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/>
39-
<uses-permission android:name="network.loki.messenger.ACCESS_SESSION_SECRETS" />
40-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- Only used on Android API 29 and lower -->
43+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
44+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
45+
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
46+
<uses-permission android:name="android.permission.INTERNET" />
47+
48+
<!-- Google may (potentially) insist we implement `ConnectionService` to request MANAGE_OWN_CALLS - see:
49+
- https://developer.android.com/reference/android/Manifest.permission#MANAGE_OWN_CALLS
50+
- https://developer.android.com/reference/android/telecom/ConnectionService
51+
-->
52+
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
53+
54+
<uses-permission android:name="android.app.role.DIALER" />
55+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
56+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
57+
<uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" />
4158
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
59+
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
4260
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
4361
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
44-
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
45-
<uses-permission android:name="android.permission.CAMERA" />
46-
<uses-permission android:name="android.permission.RECORD_AUDIO" />
47-
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
62+
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
4863
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
64+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
65+
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
66+
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
67+
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
4968
<uses-permission android:name="android.permission.VIBRATE" />
50-
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
51-
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
5269
<uses-permission android:name="android.permission.WAKE_LOCK" />
53-
<uses-permission android:name="android.permission.INTERNET" />
54-
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
70+
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- Only used on Android API 29 and lower -->
5571
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
56-
<uses-permission android:name="android.permission.INSTALL_SHORTCUT" />
5772
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
58-
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
59-
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
60-
<uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" />
61-
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
62-
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" tools:node="remove"/>
63-
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
73+
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
74+
<uses-permission android:name="network.loki.messenger.ACCESS_SESSION_SECRETS" />
6475

6576
<queries>
6677
<intent>
@@ -304,8 +315,10 @@
304315
</activity>
305316
<activity android:name="org.thoughtcrime.securesms.media.MediaOverviewActivity" />
306317

307-
<service android:enabled="true" android:name="org.thoughtcrime.securesms.service.WebRtcCallService"
308-
android:foregroundServiceType="microphone"
318+
<service
319+
android:enabled="true"
320+
android:name="org.thoughtcrime.securesms.service.WebRtcCallService"
321+
android:foregroundServiceType="phoneCall"
309322
android:exported="false" />
310323
<service
311324
android:name="org.thoughtcrime.securesms.service.KeyCachingService"

app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java

Lines changed: 52 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,34 @@
2020

2121
import android.annotation.SuppressLint;
2222
import android.app.Application;
23+
import android.app.KeyguardManager;
2324
import android.content.Context;
2425
import android.content.Intent;
2526
import android.os.AsyncTask;
2627
import android.os.Handler;
2728
import android.os.HandlerThread;
28-
29+
import android.os.PowerManager;
2930
import androidx.annotation.NonNull;
3031
import androidx.core.content.pm.ShortcutInfoCompat;
3132
import androidx.core.content.pm.ShortcutManagerCompat;
3233
import androidx.core.graphics.drawable.IconCompat;
3334
import androidx.lifecycle.DefaultLifecycleObserver;
3435
import androidx.lifecycle.LifecycleOwner;
3536
import androidx.lifecycle.ProcessLifecycleOwner;
36-
37+
import dagger.hilt.EntryPoints;
38+
import dagger.hilt.android.HiltAndroidApp;
39+
import java.io.IOException;
40+
import java.io.InputStream;
41+
import java.security.Security;
42+
import java.util.Arrays;
43+
import java.util.List;
44+
import java.util.Timer;
45+
import java.util.concurrent.Executors;
46+
import javax.inject.Inject;
47+
import network.loki.messenger.BuildConfig;
48+
import network.loki.messenger.R;
49+
import network.loki.messenger.libsession_util.ConfigBase;
50+
import network.loki.messenger.libsession_util.UserProfile;
3751
import org.conscrypt.Conscrypt;
3852
import org.session.libsession.database.MessageDataProvider;
3953
import org.session.libsession.messaging.MessagingModuleConfiguration;
@@ -44,6 +58,7 @@
4458
import org.session.libsession.utilities.ConfigFactoryUpdateListener;
4559
import org.session.libsession.utilities.Device;
4660
import org.session.libsession.utilities.Environment;
61+
import org.session.libsession.utilities.NonTranslatableStringConstants;
4762
import org.session.libsession.utilities.ProfilePictureUtilities;
4863
import org.session.libsession.utilities.SSKEnvironment;
4964
import org.session.libsession.utilities.TextSecurePreferences;
@@ -88,25 +103,8 @@
88103
import org.thoughtcrime.securesms.util.Broadcaster;
89104
import org.thoughtcrime.securesms.util.VersionDataFetcher;
90105
import org.thoughtcrime.securesms.webrtc.CallMessageProcessor;
91-
import org.webrtc.PeerConnectionFactory;
92106
import org.webrtc.PeerConnectionFactory.InitializationOptions;
93-
94-
import java.io.IOException;
95-
import java.io.InputStream;
96-
import java.security.Security;
97-
import java.util.Arrays;
98-
import java.util.List;
99-
import java.util.Timer;
100-
import java.util.concurrent.Executors;
101-
102-
import javax.inject.Inject;
103-
104-
import dagger.hilt.EntryPoints;
105-
import dagger.hilt.android.HiltAndroidApp;
106-
import network.loki.messenger.BuildConfig;
107-
import network.loki.messenger.R;
108-
import network.loki.messenger.libsession_util.ConfigBase;
109-
import network.loki.messenger.libsession_util.UserProfile;
107+
import org.webrtc.PeerConnectionFactory;
110108

111109
/**
112110
* Will be called once when the TextSecure process is created.
@@ -148,7 +146,9 @@ public class ApplicationContext extends Application implements DefaultLifecycleO
148146
CallMessageProcessor callMessageProcessor;
149147
MessagingModuleConfiguration messagingModuleConfiguration;
150148

151-
private volatile boolean isAppVisible;
149+
public volatile boolean isAppVisible;
150+
public String KEYGUARD_LOCK_TAG = NonTranslatableStringConstants.APP_NAME + ":KeyguardLock";
151+
public String WAKELOCK_TAG = NonTranslatableStringConstants.APP_NAME + ":WakeLock";
152152

153153
@Override
154154
public Object getSystemService(String name) {
@@ -457,11 +457,6 @@ private void loadEmojiSearchIndexIfNeeded() {
457457
}
458458

459459
// Method to clear the local data - returns true on success otherwise false
460-
461-
/**
462-
* Clear all local profile data and message history.
463-
* @return true on success, false otherwise.
464-
*/
465460
@SuppressLint("ApplySharedPref")
466461
public boolean clearAllData() {
467462
TextSecurePreferences.clearAll(this);
@@ -492,4 +487,35 @@ public void restartApplication() {
492487
}
493488

494489
// endregion
490+
491+
// Method to wake up the screen and dismiss the keyguard
492+
public void wakeUpDeviceAndDismissKeyguardIfRequired() {
493+
// Get the KeyguardManager and PowerManager
494+
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
495+
PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
496+
497+
// Check if the phone is locked & if the screen is awake
498+
boolean isPhoneLocked = keyguardManager.isKeyguardLocked();
499+
boolean isScreenAwake = powerManager.isInteractive();
500+
501+
if (!isScreenAwake) {
502+
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(
503+
PowerManager.FULL_WAKE_LOCK
504+
| PowerManager.ACQUIRE_CAUSES_WAKEUP
505+
| PowerManager.ON_AFTER_RELEASE,
506+
WAKELOCK_TAG);
507+
508+
// Acquire the wake lock to wake up the device
509+
wakeLock.acquire(3000);
510+
}
511+
512+
// Dismiss the keyguard.
513+
// Note: This will not bypass any app-level (Session) lock; only the device-level keyguard.
514+
// TODO: When moving to a minimum Android API of 27, replace these deprecated calls with new APIs.
515+
if (isPhoneLocked) {
516+
KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock(KEYGUARD_LOCK_TAG);
517+
keyguardLock.disableKeyguard();
518+
}
519+
}
520+
495521
}

app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
import android.text.SpannableString;
2222
import android.text.style.RelativeSizeSpan;
2323
import android.text.style.StyleSpan;
24-
2524
import androidx.annotation.NonNull;
26-
25+
import java.util.List;
26+
import java.util.Objects;
2727
import org.session.libsession.messaging.calls.CallMessageType;
2828
import org.session.libsession.messaging.sending_receiving.data_extraction.DataExtractionNotificationInfoMessage;
2929
import org.session.libsession.messaging.utilities.UpdateMessageBuilder;
@@ -33,9 +33,6 @@
3333
import org.session.libsession.utilities.recipients.Recipient;
3434
import org.thoughtcrime.securesms.dependencies.DatabaseComponent;
3535

36-
import java.util.List;
37-
import java.util.Objects;
38-
3936
/**
4037
* The base class for message record models that are displayed in
4138
* conversations, as opposed to models that are displayed in a thread list.

app/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ private String getName() {
103103
@Override
104104
public CharSequence getDisplayBody(@NonNull Context context) {
105105
// no need to display anything if there are no messages
106-
if(lastMessage == null){
106+
if (lastMessage == null){
107107
return "";
108108
}
109109
else if (isGroupUpdateMessage()) {

0 commit comments

Comments
 (0)