package fr.pagesjaunes.mdm;
import android.accounts.AccountManager;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
import android.view.inputmethod.InputMethodManager;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
/**
* Module for all Android related provisions
*/
@Module(complete = false, library = true)
public class AndroidModule {
@Provides
@Singleton
Context provideAppContext() {
return BootstrapApplication.getInstance().getApplicationContext();
}
@Provides
SharedPreferences provideDefaultSharedPreferences(final Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
@Provides
PackageInfo providePackageInfo(Context context) {
try {
return context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
throw new RuntimeException(e);
}
}
@Provides
TelephonyManager provideTelephonyManager(Context context) {
return getSystemService(context, Context.TELEPHONY_SERVICE);
}
@SuppressWarnings("unchecked")
public <T> T getSystemService(Context context, String serviceConstant) {
return (T) context.getSystemService(serviceConstant);
}
@Provides
InputMethodManager provideInputMethodManager(final Context context) {
return (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
}
@Provides
ApplicationInfo provideApplicationInfo(final Context context) {
return context.getApplicationInfo();
}
@Provides
AccountManager provideAccountManager(final Context context) {
return AccountManager.get(context);
}
@Provides
ClassLoader provideClassLoader(final Context context) {
return context.getClassLoader();
}
@Provides
NotificationManager provideNotificationManager(final Context context) {
return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
}