/*
* 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;
}
}