Disable default CameraX initializer.

CameraX was initializing Camera2 API stuff on API < 21, causing
crashes at boot. To handle this, we disable the default
ContentProvider initializer and initialize things ourselves for
appropriate API levels.
This commit is contained in:
Greyson Parrelli
2019-06-30 00:45:59 -04:00
parent 23b4a9b191
commit 6715a89a25
3 changed files with 24 additions and 1 deletions

View File

@@ -17,6 +17,9 @@
package org.thoughtcrime.securesms;
import android.annotation.SuppressLint;
import androidx.camera.camera2.Camera2AppConfig;
import androidx.camera.core.CameraX;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ProcessLifecycleOwner;
@@ -126,6 +129,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
initializePendingMessages();
initializeUnidentifiedDeliveryAbilityRefresh();
initializeBlobProvider();
initializeCameraX();
NotificationChannels.create(this);
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
}
@@ -357,6 +361,17 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
});
}
@SuppressLint("RestrictedApi")
private void initializeCameraX() {
if (Build.VERSION.SDK_INT >= 21) {
try {
CameraX.init(this, Camera2AppConfig.create(this));
} catch (Throwable t) {
Log.w(TAG, "Failed to initialize CameraX.");
}
}
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(DynamicLanguageContextWrapper.updateContext(base, TextSecurePreferences.getLanguage(base)));