package com.appsimobile.appsii.dagger; import android.accounts.AccountManager; import android.app.ActivityManager; import android.app.Application; import android.app.KeyguardManager; import android.appwidget.AppWidgetHost; import android.appwidget.AppWidgetManager; import android.content.ContentResolver; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.res.Resources; import android.location.LocationManager; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Build; import android.os.UserManager; import android.os.Vibrator; import android.preference.PreferenceManager; import android.provider.Settings; import android.telephony.TelephonyManager; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import com.appsimobile.appsii.AnalyticsManager; import com.appsimobile.appsii.AppsiApplication; import com.appsimobile.appsii.AppsiiUtils; import com.appsimobile.appsii.BuildConfig; import com.appsimobile.appsii.LoaderManagerImpl; import com.appsimobile.appsii.appwidget.AppWidgetIconCache; import com.appsimobile.appsii.appwidget.AppsiiAppWidgetHost; import com.appsimobile.appsii.appwidget.Utilities; import com.appsimobile.appsii.compat.AppWidgetManagerCompat; import com.appsimobile.appsii.compat.AppWidgetManagerCompatV16; import com.appsimobile.appsii.compat.AppWidgetManagerCompatVL; import com.appsimobile.appsii.compat.LauncherAppsCompat; import com.appsimobile.appsii.compat.LauncherAppsCompatV16; import com.appsimobile.appsii.compat.LauncherAppsCompatVL; import com.appsimobile.appsii.compat.UserManagerCompat; import com.appsimobile.appsii.compat.UserManagerCompatV16; import com.appsimobile.appsii.compat.UserManagerCompatV17; import com.appsimobile.appsii.compat.UserManagerCompatVL; import com.appsimobile.appsii.iab.FeatureManager; import com.appsimobile.appsii.iab.FeatureManagerFactory; import com.appsimobile.appsii.iab.FeatureManagerHelper; import com.appsimobile.appsii.module.home.YahooLocationChooserDialogFragment; import com.appsimobile.appsii.module.home.config.HomeItemConfiguration; import com.appsimobile.appsii.module.home.config.HomeItemConfigurationHelper; import com.appsimobile.appsii.module.home.config.HomeItemConfigurationHelper .HomeItemConfigurationLoader; import com.appsimobile.appsii.permissions.PermissionUtils; import com.appsimobile.appsii.plugins.IconCache; import com.appsimobile.appsii.preference.ObfuscatedPreferences; import com.appsimobile.appsii.preference.PreferenceHelper; import com.google.android.vending.licensing.AESObfuscator; import java.util.TimeZone; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; /** * Created by nmartens on 24/11/15. */ @Module public class ApplicationModule { private static final byte[] SALT = "http://developer.android.com/google/play/billing/billing_reference.html".getBytes(); private final Application mApplication; public ApplicationModule(Application app) { this.mApplication = app; } @Singleton @Provides Context provideApplicationContext() { return mApplication; } @Provides @Singleton SharedPreferences provideSharedPreferences() { return PreferenceManager.getDefaultSharedPreferences(mApplication); } @Provides @Singleton ObfuscatedPreferences provideObfuscatedPreferencess(SharedPreferences preferences) { AESObfuscator obfuscator = new AESObfuscator(SALT, BuildConfig.APPLICATION_ID, Settings.Secure.ANDROID_ID); return new ObfuscatedPreferences(preferences, obfuscator); } @Provides TimeZone provideDefaultTimeZone() { return TimeZone.getDefault(); } @Provides @Singleton AnalyticsManager provideAnalyticsManager() { return new AnalyticsManager(mApplication); } @Provides @Singleton LoaderManagerImpl provideLoaderManagerImpl() { return new LoaderManagerImpl("Appsi", mApplication, false); } @Provides @Singleton PreferenceHelper providePreferenceHelper(Context context, SharedPreferences preferences) { return new PreferenceHelper(context, preferences); } @Provides @Singleton AppsiiAppWidgetHost provideAppsiiAppWidgetHost(Context context) { return new AppsiiAppWidgetHost(context, AppsiApplication.APPWIDGET_HOST_ID); } @Provides @Singleton AppWidgetManager provideAppWidgetManager(Context context) { return AppWidgetManager.getInstance(context); } @Provides @Singleton AppWidgetHost provideAppWidgetHost(AppsiiAppWidgetHost host) { return host; } @Provides @Singleton HomeItemConfiguration provideHomeItemConfiguration( Context context, HomeItemConfigurationLoader l) { return new HomeItemConfigurationHelper(context, l); } @Provides PackageManager providePackageManager(Context context) { return context.getPackageManager(); } @Provides @Singleton HomeItemConfigurationHelper provideHomeItemConfigurationHelper(HomeItemConfiguration c) { return (HomeItemConfigurationHelper) c; } @Provides @Singleton FeatureManagerHelper provideFeatureManagerHelper(ObfuscatedPreferences prefs) { return new FeatureManagerHelper(prefs); } @Provides ConnectivityManager provideConnectivityManager(Context context) { return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } @Provides WindowManager provideWindowManager(Context context) { return (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); } @Provides InputMethodManager provideInputMethodManager(Context context) { return (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); } @Provides TelephonyManager provideTelephonyManager(Context context) { return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); } @Provides WifiManager provideWifiManager(Context context) { return (WifiManager) context.getSystemService(Context.WIFI_SERVICE); } @Provides AudioManager provideAudioManager(Context context) { return (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); } @Provides AccountManager provideAccountManager(Context context) { return (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); } @Provides KeyguardManager provideKeyguardManager(Context context) { return (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); } @Provides UserManager provideUserManager(Context context) { return (UserManager) context.getSystemService(Context.USER_SERVICE); } @Provides ActivityManager provideActivityManager(Context context) { return (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); } @Provides Vibrator provideVibrator(Context context) { return (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); } @Provides LauncherApps provideLauncherApps(Context context) { return (LauncherApps) context.getSystemService(Context.LAUNCHER_APPS_SERVICE); } @Provides LocationManager provideLocationManager(Context context) { return (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); } @Provides ContentResolver provideContentResolver(Context context) { return context.getContentResolver(); } @Provides Resources provideResources(Context context) { return context.getResources(); } @Provides @Singleton UserManagerCompat provideUserManagerCompat(Context context) { if (Utilities.isLmpOrAbove()) { return new UserManagerCompatVL(context); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { return new UserManagerCompatV17(); } else { return new UserManagerCompatV16(); } } @Provides @Singleton LauncherAppsCompat provideLauncherAppsCompat(Context context, AppsiiUtils appsiiUtils) { if (Utilities.isLmpOrAbove()) { return new LauncherAppsCompatVL(appsiiUtils); } else { return new LauncherAppsCompatV16(context); } } @Provides @Singleton FeatureManager provideFeatureManager(Context context) { return FeatureManagerFactory.getFeatureManager(context); } @Provides @Singleton AppWidgetManagerCompat provideAppWidgetManagerCompat(Context context, AppWidgetManager awm, PackageManager pm, UserManager um) { if (Utilities.isLmpOrAbove()) { return new AppWidgetManagerCompatVL(context, awm, pm, um); } else { return new AppWidgetManagerCompatV16(context.getApplicationContext(), awm); } } @Provides @Singleton IconCache provideIconCache(ActivityManager activityManager) { return new IconCache(activityManager); } @Provides @Singleton AppWidgetIconCache provideAppWidgetIconCache(Context context, UserManagerCompat umc, LauncherAppsCompat lac) { return new AppWidgetIconCache(context, umc, lac); } @Provides YahooLocationChooserDialogFragment.LocationUpdateHelper provideLocationUpdateHelper( SharedPreferences p, PermissionUtils pu, LocationManager lm) { return new YahooLocationChooserDialogFragment.DefaultLocationUpdate(p, pu, lm); } }