/* * Copyright (C) 2008 Esmertec AG. * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.mms; import android.app.Application; import android.content.Context; import android.content.res.Configuration; import android.drm.DrmManagerClient; import android.location.Country; import android.location.CountryDetector; import android.location.CountryListener; import android.os.StrictMode; import android.preference.PreferenceManager; import android.provider.SearchRecentSuggestions; import android.telephony.TelephonyManager; import android.util.Log; import com.android.mms.data.Contact; import com.android.mms.data.Conversation; import com.android.mms.layout.LayoutManager; import com.android.mms.transaction.MessagingNotification; import com.android.mms.util.DownloadManager; import com.android.mms.util.DraftCache; import com.android.mms.util.PduLoaderManager; import com.android.mms.util.RateController; import com.android.mms.util.SmileyParser; import com.android.mms.util.EmojiParser; import com.android.mms.util.ThumbnailManager; public class MmsApp extends Application { public static final String LOG_TAG = "Mms"; private SearchRecentSuggestions mRecentSuggestions; private TelephonyManager mTelephonyManager; private CountryDetector mCountryDetector; private CountryListener mCountryListener; private String mCountryIso; private static MmsApp sMmsApp = null; private PduLoaderManager mPduLoaderManager; private ThumbnailManager mThumbnailManager; private DrmManagerClient mDrmManagerClient; @Override public void onCreate() { super.onCreate(); if (Log.isLoggable(LogTag.STRICT_MODE_TAG, Log.DEBUG)) { // Log tag for enabling/disabling StrictMode violation log. This will dump a stack // in the log that shows the StrictMode violator. // To enable: adb shell setprop log.tag.Mms:strictmode DEBUG StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build()); } sMmsApp = this; // Load the default preference values PreferenceManager.setDefaultValues(this, R.xml.preferences, false); // Figure out the country *before* loading contacts and formatting numbers mCountryDetector = (CountryDetector) getSystemService(Context.COUNTRY_DETECTOR); mCountryListener = new CountryListener() { @Override public synchronized void onCountryDetected(Country country) { mCountryIso = country.getCountryIso(); } }; mCountryDetector.addCountryListener(mCountryListener, getMainLooper()); Context context = getApplicationContext(); mPduLoaderManager = new PduLoaderManager(context); mThumbnailManager = new ThumbnailManager(context); MmsConfig.init(this); Contact.init(this); DraftCache.init(this); Conversation.init(this); DownloadManager.init(this); RateController.init(this); LayoutManager.init(this); SmileyParser.init(this); EmojiParser.init(this); MessagingNotification.init(this); } synchronized public static MmsApp getApplication() { return sMmsApp; } @Override public void onTerminate() { mCountryDetector.removeCountryListener(mCountryListener); } @Override public void onLowMemory() { super.onLowMemory(); mPduLoaderManager.onLowMemory(); mThumbnailManager.onLowMemory(); } public PduLoaderManager getPduLoaderManager() { return mPduLoaderManager; } public ThumbnailManager getThumbnailManager() { return mThumbnailManager; } @Override public void onConfigurationChanged(Configuration newConfig) { LayoutManager.getInstance().onConfigurationChanged(newConfig); } /** * @return Returns the TelephonyManager. */ public TelephonyManager getTelephonyManager() { if (mTelephonyManager == null) { mTelephonyManager = (TelephonyManager)getApplicationContext() .getSystemService(Context.TELEPHONY_SERVICE); } return mTelephonyManager; } /** * Returns the content provider wrapper that allows access to recent searches. * @return Returns the content provider wrapper that allows access to recent searches. */ public SearchRecentSuggestions getRecentSuggestions() { /* if (mRecentSuggestions == null) { mRecentSuggestions = new SearchRecentSuggestions(this, SuggestionsProvider.AUTHORITY, SuggestionsProvider.MODE); } */ return mRecentSuggestions; } // This function CAN return null. public String getCurrentCountryIso() { if (mCountryIso == null) { Country country = mCountryDetector.detectCountry(); if (country != null) { mCountryIso = country.getCountryIso(); } } return mCountryIso; } public DrmManagerClient getDrmManagerClient() { if (mDrmManagerClient == null) { mDrmManagerClient = new DrmManagerClient(getApplicationContext()); } return mDrmManagerClient; } }