Skip to content

Commit 695dbaa

Browse files
committed
Merge branch 'develop'
2 parents be9daa6 + da782d1 commit 695dbaa

File tree

13 files changed

+131
-144
lines changed

13 files changed

+131
-144
lines changed

app/build.gradle

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ plugins {
88

99
id "com.mikepenz.aboutlibraries.plugin"
1010

11-
id "com.google.secrets_gradle_plugin" version "0.5"
11+
id "com.google.android.libraries.mapsplatform.secrets-gradle-plugin"
1212
}
1313

1414
secrets {
@@ -52,8 +52,8 @@ android {
5252
applicationId "me.tagavari.airmessage"
5353
minSdkVersion 23
5454
targetSdkVersion 31
55-
versionName "3.3.5"
56-
versionCode 129
55+
versionName "3.3.6"
56+
versionCode 130
5757

5858
resConfigs "en", "fr", "ja"
5959

@@ -127,19 +127,19 @@ dependencies {
127127
androidTestImplementation "androidx.test:rules:1.4.0"
128128

129129
//Android extensions
130-
implementation "androidx.core:core-ktx:1.6.0"
131-
implementation "androidx.activity:activity-ktx:1.3.1"
130+
implementation "androidx.core:core-ktx:1.7.0"
131+
implementation "androidx.activity:activity-ktx:1.4.0"
132132
implementation "androidx.fragment:fragment-ktx:1.3.6"
133133
implementation "androidx.preference:preference-ktx:1.1.1"
134-
implementation "androidx.browser:browser:1.3.0"
134+
implementation "androidx.browser:browser:1.4.0"
135135
implementation "androidx.exifinterface:exifinterface:1.3.3"
136136
implementation "androidx.security:security-crypto:1.0.0"
137137

138138
//Material components
139139
implementation "com.google.android.material:material:1.4.0"
140140

141141
//Android architecture components
142-
def lifecycle_version = "2.3.1"
142+
def lifecycle_version = "2.4.0"
143143

144144
// ViewModel
145145
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
@@ -148,13 +148,18 @@ dependencies {
148148
// Lifecycles only (without ViewModel or LiveData)
149149
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
150150

151+
//WorkManager
152+
def work_version = "2.7.0"
153+
implementation "androidx.work:work-runtime-ktx:$work_version"
154+
implementation "androidx.work:work-rxjava3:$work_version"
155+
151156
//ReactiveX
152157
implementation "io.reactivex.rxjava3:rxandroid:3.0.0"
153-
implementation "io.reactivex.rxjava3:rxjava:3.1.1"
158+
implementation "io.reactivex.rxjava3:rxjava:3.1.2"
154159
implementation "io.reactivex.rxjava3:rxkotlin:3.0.1"
155160

156161
//Layouts and views
157-
implementation "androidx.constraintlayout:constraintlayout:2.1.0"
162+
implementation "androidx.constraintlayout:constraintlayout:2.1.1"
158163
implementation "androidx.viewpager2:viewpager2:1.0.0"
159164
implementation "com.google.android.flexbox:flexbox:3.0.0"
160165

@@ -165,7 +170,7 @@ dependencies {
165170
implementation "com.google.mlkit:smart-reply:16.2.0"
166171

167172
//Firebase
168-
implementation platform("com.google.firebase:firebase-bom:28.4.0")
173+
implementation platform("com.google.firebase:firebase-bom:29.0.0")
169174

170175
implementation "com.google.firebase:firebase-core"
171176
implementation "com.google.firebase:firebase-messaging-ktx"
@@ -174,7 +179,7 @@ dependencies {
174179
implementation "com.google.firebase:firebase-crashlytics-ktx"
175180

176181
//GMS
177-
implementation "com.google.android.gms:play-services-maps:17.0.1"
182+
implementation "com.google.android.gms:play-services-maps:18.0.0"
178183
implementation "com.google.android.gms:play-services-location:18.0.0"
179184
implementation "com.google.android.gms:play-services-auth:19.2.0"
180185

@@ -183,7 +188,7 @@ dependencies {
183188
implementation "com.mikepenz:aboutlibraries:$aboutlibs_version"
184189

185190
//Tools
186-
implementation "com.googlecode.ez-vcard:ez-vcard:0.11.2"
191+
implementation "com.googlecode.ez-vcard:ez-vcard:0.11.3"
187192

188193
//Backend
189194
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
@@ -192,15 +197,15 @@ dependencies {
192197
implementation "com.github.bumptech.glide:glide:4.12.0"
193198
implementation "jp.wasabeef:glide-transformations:4.3.0"
194199

195-
implementation "com.google.android.exoplayer:exoplayer-core:2.15.0"
196-
implementation "com.google.android.exoplayer:exoplayer-ui:2.15.0"
200+
implementation "com.google.android.exoplayer:exoplayer-core:2.16.0"
201+
implementation "com.google.android.exoplayer:exoplayer-ui:2.16.0"
197202

198-
implementation "org.jsoup:jsoup:1.14.2"
203+
implementation "org.jsoup:jsoup:1.14.3"
199204

200205
implementation project(":android-smsmms")
201206

202207
implementation "org.java-websocket:Java-WebSocket:1.5.2"
203-
implementation "com.otaliastudios:transcoder:0.10.3"
208+
implementation "com.otaliastudios:transcoder:0.10.4"
204209
}
205210

206211
repositories {

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
android:theme="@style/DayNight.NoActionBar.Protected"
104104
android:windowSoftInputMode="adjustResize|stateVisible">
105105
<meta-data android:name="WindowManagerPreference:SuppressWindowControlNavigationButton" android:value="true" />
106-
</activity>
106+
</activity>
107107

108108
<!-- Preferences -->
109109
<activity

app/src/main/java/me/tagavari/airmessage/MainApplication.java

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,24 @@
99
import android.os.Handler;
1010
import android.os.Process;
1111
import android.provider.ContactsContract;
12+
1213
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
1314
import androidx.preference.PreferenceManager;
15+
import androidx.work.ExistingWorkPolicy;
16+
import androidx.work.OneTimeWorkRequest;
17+
import androidx.work.OutOfQuotaPolicy;
18+
import androidx.work.WorkManager;
19+
20+
import com.google.android.gms.maps.MapsInitializer;
1421
import com.google.firebase.crashlytics.FirebaseCrashlytics;
22+
23+
import org.bouncycastle.jce.provider.BouncyCastleProvider;
24+
25+
import java.io.PrintWriter;
26+
import java.io.StringWriter;
27+
import java.lang.ref.WeakReference;
28+
import java.security.Security;
29+
1530
import me.tagavari.airmessage.activity.CrashReport;
1631
import me.tagavari.airmessage.activity.Preferences;
1732
import me.tagavari.airmessage.data.DatabaseManager;
@@ -22,13 +37,7 @@
2237
import me.tagavari.airmessage.helper.ThemeHelper;
2338
import me.tagavari.airmessage.redux.ReduxReceiverNotification;
2439
import me.tagavari.airmessage.redux.ReduxReceiverShortcut;
25-
import me.tagavari.airmessage.service.SystemMessageImportService;
26-
import org.bouncycastle.jce.provider.BouncyCastleProvider;
27-
28-
import java.io.PrintWriter;
29-
import java.io.StringWriter;
30-
import java.lang.ref.WeakReference;
31-
import java.security.Security;
40+
import me.tagavari.airmessage.worker.SystemMessageCleanupWorker;
3241

3342
public class MainApplication extends Application {
3443
//Creating the reference values
@@ -113,24 +122,30 @@ public void onCreate() {
113122
new ReduxReceiverShortcut(this).initialize();
114123
}
115124
new ReduxReceiverNotification(this).initialize();
116-
125+
117126
//Checking if text message integration is not permitted
118127
if(!Preferences.isTextMessageIntegrationActive(this)) {
128+
boolean cleanUpMessages = false;
119129
//Checking if the toggle is enabled (creating an invalid state)
120130
if(Preferences.getPreferenceTextMessageIntegration(this)) {
121131
//Disabling text message integration
122132
Preferences.setPreferenceTextMessageIntegration(this, false);
123133

124134
//Clearing the database of text messages
125-
Intent serviceIntent = new Intent(this, SystemMessageImportService.class).setAction(SystemMessageImportService.selfIntentActionDelete);
126-
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) startForegroundService(serviceIntent);
127-
else startService(serviceIntent);
135+
cleanUpMessages = true;
128136
}
129137
//Clearing the database of text messages if there are still text messages in the database (in the case that the application is killed before it can clear all its messages)
130138
else if(SharedPreferencesManager.getTextMessageConversationsInstalled(this)) {
131-
Intent serviceIntent = new Intent(this, SystemMessageImportService.class).setAction(SystemMessageImportService.selfIntentActionDelete);
132-
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) startForegroundService(serviceIntent);
133-
else startService(serviceIntent);
139+
cleanUpMessages = true;
140+
}
141+
142+
if(cleanUpMessages) {
143+
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(SystemMessageCleanupWorker.class)
144+
.setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
145+
.build();
146+
147+
//If this work is already enqueued (likely from our broadcast listener), replace it with our expedited request
148+
WorkManager.getInstance(this).enqueueUniqueWork(SystemMessageCleanupWorker.workName, ExistingWorkPolicy.REPLACE, workRequest);
134149
}
135150
}
136151

@@ -140,6 +155,9 @@ else if(SharedPreferencesManager.getTextMessageConversationsInstalled(this)) {
140155
Security.removeProvider("BC");
141156
int insertionIndex = Security.insertProviderAt(new BouncyCastleProvider(), 1);
142157
}
158+
159+
//Initializing Google Maps
160+
MapsInitializer.initialize(getApplicationContext(), MapsInitializer.Renderer.LATEST, null);
143161
}
144162

145163
public static MainApplication getInstance() {

app/src/main/java/me/tagavari/airmessage/activity/MediaViewer.java

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import android.view.MenuItem;
1313
import android.view.View;
1414
import android.view.ViewGroup;
15-
import android.view.WindowInsetsController;
1615

1716
import androidx.activity.result.ActivityResultLauncher;
1817
import androidx.activity.result.contract.ActivityResultContracts;
@@ -27,6 +26,7 @@
2726
import androidx.core.view.WindowInsetsCompat;
2827
import androidx.recyclerview.widget.RecyclerView;
2928
import androidx.viewpager2.widget.ViewPager2;
29+
3030
import com.bumptech.glide.Glide;
3131
import com.bumptech.glide.load.engine.GlideException;
3232
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
@@ -35,15 +35,15 @@
3535
import com.bumptech.glide.request.target.Target;
3636
import com.bumptech.glide.signature.ObjectKey;
3737
import com.github.chrisbanes.photoview.PhotoView;
38+
import com.google.android.exoplayer2.ExoPlayer;
3839
import com.google.android.exoplayer2.MediaItem;
3940
import com.google.android.exoplayer2.Player;
40-
import com.google.android.exoplayer2.SimpleExoPlayer;
41-
import com.google.android.exoplayer2.source.MediaSource;
42-
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
4341
import com.google.android.exoplayer2.ui.PlayerView;
44-
import com.google.android.exoplayer2.upstream.DataSource;
45-
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
46-
import com.google.android.exoplayer2.util.Util;
42+
43+
import java.io.File;
44+
import java.util.ArrayList;
45+
import java.util.List;
46+
4747
import me.tagavari.airmessage.R;
4848
import me.tagavari.airmessage.constants.MIMEConstants;
4949
import me.tagavari.airmessage.helper.AttachmentStorageHelper;
@@ -52,10 +52,6 @@
5252
import me.tagavari.airmessage.messaging.AttachmentInfo;
5353
import me.tagavari.airmessage.view.RoundedFrameLayout;
5454

55-
import java.io.File;
56-
import java.util.ArrayList;
57-
import java.util.List;
58-
5955
public class MediaViewer extends AppCompatActivity {
6056
//Creating the constants
6157
public static final String intentParamIndex = "index";
@@ -314,7 +310,7 @@ private class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
314310

315311
private Player currentPlayer = null;
316312
private final List<AttachmentInfo> itemList;
317-
private final List<SimpleExoPlayer> playerList = new ArrayList<>();
313+
private final List<ExoPlayer> playerList = new ArrayList<>();
318314
private final List<PlayerView> playerViewList = new ArrayList<>();
319315

320316
RecyclerAdapter(List<AttachmentInfo> itemList) {
@@ -328,7 +324,7 @@ public void pausePlayer() {
328324
}
329325

330326
public void release() {
331-
for(SimpleExoPlayer player : playerList) player.release();
327+
for(ExoPlayer player : playerList) player.release();
332328
}
333329

334330
public void hideLocalUI() {
@@ -432,13 +428,13 @@ public boolean onResourceReady(Drawable resource, Object model, Target<Drawable>
432428
}
433429

434430
class VideoViewHolder extends RecyclerView.ViewHolder {
435-
final SimpleExoPlayer player;
431+
final ExoPlayer player;
436432

437433
VideoViewHolder(@NonNull View itemView) {
438434
super(itemView);
439435

440436
//Creating the player instance
441-
player = new SimpleExoPlayer.Builder(MediaViewer.this).build();
437+
player = new ExoPlayer.Builder(MediaViewer.this).build();
442438

443439
//Adding the player to the list
444440
playerList.add(player);
@@ -480,9 +476,7 @@ public void onPlayWhenReadyChanged(boolean playWhenReady, int reason) {
480476
}
481477

482478
void playVideo(File file, boolean autoPlay) {
483-
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(MediaViewer.this, Util.getUserAgent(MediaViewer.this, getResources().getString(R.string.app_name)));
484-
MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(Uri.fromFile(file)));
485-
player.setMediaSource(videoSource);
479+
player.setMediaItem(MediaItem.fromUri(Uri.fromFile(file)));
486480
player.prepare();
487481
player.setPlayWhenReady(autoPlay);
488482
}

app/src/main/java/me/tagavari/airmessage/connection/update/RAConversation.java

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

app/src/main/java/me/tagavari/airmessage/connection/update/RAConversationRename.java

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

app/src/main/java/me/tagavari/airmessage/connection/update/ReactiveAction.java

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

app/src/main/java/me/tagavari/airmessage/receiver/DefaultMessagingAppChangedReceiver.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@
55
import android.content.Intent;
66
import android.os.Build;
77
import android.provider.Telephony;
8+
89
import androidx.annotation.RequiresApi;
910
import androidx.core.content.ContextCompat;
11+
import androidx.work.ExistingWorkPolicy;
12+
import androidx.work.OneTimeWorkRequest;
13+
import androidx.work.WorkManager;
14+
1015
import me.tagavari.airmessage.activity.Preferences;
1116
import me.tagavari.airmessage.data.SharedPreferencesManager;
1217
import me.tagavari.airmessage.service.SystemMessageImportService;
18+
import me.tagavari.airmessage.worker.SystemMessageCleanupWorker;
1319

1420
@RequiresApi(api = Build.VERSION_CODES.N)
1521
public class DefaultMessagingAppChangedReceiver extends BroadcastReceiver {
@@ -38,9 +44,10 @@ public void onReceive(Context context, Intent intent) {
3844
if(conversationsInstalled) {
3945
//Disabling text message integration
4046
Preferences.setPreferenceTextMessageIntegration(context, false);
41-
47+
4248
//Clearing the database of text messages
43-
ContextCompat.startForegroundService(context, new Intent(context, SystemMessageImportService.class).setAction(SystemMessageImportService.selfIntentActionDelete));
49+
OneTimeWorkRequest workRequest = OneTimeWorkRequest.from(SystemMessageCleanupWorker.class);
50+
WorkManager.getInstance(context).enqueueUniqueWork(SystemMessageCleanupWorker.workName, ExistingWorkPolicy.KEEP, workRequest);
4451
}
4552
}
4653
}

app/src/main/java/me/tagavari/airmessage/service/FCMService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private void startConnectionService(RemoteMessage remoteMessage) {
206206
* Android 12 also introduced restrictions as to when a foreground service can be launched from the background,
207207
* so we should check if we are allowed to launch one before doing so.
208208
*/
209-
if(ConnectionService.getInstance() == null && Build.VERSION.SDK_INT < Build.VERSION_CODES.S || remoteMessage.getPriority() == RemoteMessage.PRIORITY_HIGH) {
209+
if(ConnectionService.getInstance() == null && (Build.VERSION.SDK_INT < Build.VERSION_CODES.S || remoteMessage.getPriority() == RemoteMessage.PRIORITY_HIGH)) {
210210
ConnectionServiceLaunchHelper.launchTemporary(this);
211211
}
212212
}

0 commit comments

Comments
 (0)