|
@@ -21,9 +21,12 @@ import android.app.ActivityManager;
|
|
|
import android.app.Application;
|
|
|
import android.app.NotificationChannel;
|
|
|
import android.app.NotificationManager;
|
|
|
+import android.content.BroadcastReceiver;
|
|
|
import android.content.ContentResolver;
|
|
|
import android.content.Context;
|
|
|
import android.content.Intent;
|
|
|
+import android.content.IntentFilter;
|
|
|
+import android.content.RestrictionsManager;
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
import android.content.pm.PackageInfo;
|
|
|
import android.content.pm.PackageManager;
|
|
@@ -55,6 +58,7 @@ import com.nextcloud.client.onboarding.OnboardingService;
|
|
|
import com.nextcloud.client.preferences.AppPreferences;
|
|
|
import com.nextcloud.client.preferences.AppPreferencesImpl;
|
|
|
import com.nextcloud.client.preferences.DarkMode;
|
|
|
+import com.nextcloud.utils.extensions.ContextExtensionsKt;
|
|
|
import com.nmc.android.ui.LauncherActivity;
|
|
|
import com.owncloud.android.authentication.AuthenticatorActivity;
|
|
|
import com.owncloud.android.authentication.PassCodeManager;
|
|
@@ -63,6 +67,7 @@ import com.owncloud.android.datamodel.ArbitraryDataProviderImpl;
|
|
|
import com.owncloud.android.datamodel.MediaFolder;
|
|
|
import com.owncloud.android.datamodel.MediaFolderType;
|
|
|
import com.owncloud.android.datamodel.MediaProvider;
|
|
|
+import com.owncloud.android.datamodel.ReceiverFlag;
|
|
|
import com.owncloud.android.datamodel.SyncedFolder;
|
|
|
import com.owncloud.android.datamodel.SyncedFolderProvider;
|
|
|
import com.owncloud.android.datamodel.ThumbnailsCacheManager;
|
|
@@ -75,6 +80,7 @@ import com.owncloud.android.lib.resources.status.NextcloudVersion;
|
|
|
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
|
|
|
import com.owncloud.android.ui.activity.SyncedFoldersActivity;
|
|
|
import com.owncloud.android.ui.notifications.NotificationUtils;
|
|
|
+import com.owncloud.android.utils.appConfig.AppConfigManager;
|
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
|
import com.owncloud.android.utils.FilesSyncHelper;
|
|
|
import com.owncloud.android.utils.PermissionUtil;
|
|
@@ -191,6 +197,8 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
|
|
|
@SuppressWarnings("unused")
|
|
|
private boolean mBound;
|
|
|
|
|
|
+ private AppConfigManager appConfigManager;
|
|
|
+
|
|
|
private static AppComponent appComponent;
|
|
|
|
|
|
/**
|
|
@@ -281,6 +289,7 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
|
|
|
return appComponent;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
@SuppressFBWarnings("ST")
|
|
|
@Override
|
|
|
public void onCreate() {
|
|
@@ -314,11 +323,15 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
|
|
|
|
|
|
OwnCloudClientManagerFactory.setUserAgent(getUserAgent());
|
|
|
|
|
|
- try {
|
|
|
- OwnCloudClientManagerFactory.setProxyHost(getResources().getString(R.string.proxy_host));
|
|
|
- OwnCloudClientManagerFactory.setProxyPort(getResources().getInteger(R.integer.proxy_port));
|
|
|
- } catch (Resources.NotFoundException e) {
|
|
|
- // no proxy set
|
|
|
+ if (isClientBrandedPlus()) {
|
|
|
+ RestrictionsManager restrictionsManager = (RestrictionsManager) getSystemService(Context.RESTRICTIONS_SERVICE);
|
|
|
+ appConfigManager = new AppConfigManager(this, restrictionsManager.getApplicationRestrictions());
|
|
|
+ appConfigManager.setProxyConfig(isClientBrandedPlus());
|
|
|
+
|
|
|
+ // Listen app config changes
|
|
|
+ ContextExtensionsKt.registerBroadcastReceiver(this, restrictionsReceiver, restrictionsFilter, ReceiverFlag.NotExported);
|
|
|
+ } else {
|
|
|
+ setProxyForNonBrandedPlusClients();
|
|
|
}
|
|
|
|
|
|
// initialise thumbnails cache on background thread
|
|
@@ -364,9 +377,35 @@ public class MainApp extends MultiDexApplication implements HasAndroidInjector {
|
|
|
} else if (event == Lifecycle.Event.ON_STOP) {
|
|
|
passCodeManager.setCanAskPin(true);
|
|
|
Log_OC.d(TAG, "APP IN BACKGROUND");
|
|
|
+ } else if (event == Lifecycle.Event.ON_RESUME) {
|
|
|
+ if (appConfigManager == null) return;
|
|
|
+ appConfigManager.setProxyConfig(isClientBrandedPlus());
|
|
|
+ Log_OC.d(TAG, "APP ON RESUME");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ private void setProxyForNonBrandedPlusClients() {
|
|
|
+ try {
|
|
|
+ OwnCloudClientManagerFactory.setProxyHost(getResources().getString(R.string.proxy_host));
|
|
|
+ OwnCloudClientManagerFactory.setProxyPort(getResources().getInteger(R.integer.proxy_port));
|
|
|
+ } catch (Resources.NotFoundException e) {
|
|
|
+ Log_OC.d(TAG, "Error caught at setProxyForNonBrandedPlusClients: " + e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static boolean isClientBrandedPlus() {
|
|
|
+ return (getAppContext().getResources().getBoolean(R.bool.is_branded_plus_client));
|
|
|
+ }
|
|
|
+
|
|
|
+ private final IntentFilter restrictionsFilter = new IntentFilter(Intent.ACTION_APPLICATION_RESTRICTIONS_CHANGED);
|
|
|
+
|
|
|
+ private final BroadcastReceiver restrictionsReceiver = new BroadcastReceiver() {
|
|
|
+ @Override public void onReceive(Context context, Intent intent) {
|
|
|
+ if (appConfigManager == null) return;
|
|
|
+ appConfigManager.setProxyConfig(isClientBrandedPlus());
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
private void registerGlobalPassCodeProtection() {
|
|
|
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
|
|
|
|