150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby/* 250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Copyright (C) 2011 The Android Open Source Project 350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * 450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License"); 550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * you may not use this file except in compliance with the License. 650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * You may obtain a copy of the License at 750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * 850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * http://www.apache.org/licenses/LICENSE-2.0 950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * 1050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * Unless required by applicable law or agreed to in writing, software 1150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS, 1250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * See the License for the specific language governing permissions and 1450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * limitations under the License. 1550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby */ 1650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 1750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambypackage com.android.cellbroadcastreceiver; 1850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 1950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.app.Application; 2057273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hambyimport android.telephony.CellBroadcastMessage; 2150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.util.Log; 2250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambyimport android.preference.PreferenceManager; 2350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 2457273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hambyimport java.util.ArrayList; 2500b87064abfb9d254fbbf72110643d2e626365e6Jake Hambyimport java.util.concurrent.atomic.AtomicInteger; 2650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 2750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby/** 2850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * The application class loads the default preferences at first start, 2950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby * and remembers the time of the most recently received broadcast. 3050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby */ 3150a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hambypublic class CellBroadcastReceiverApp extends Application { 3247ffe15b440cb98548c0f2c58cbd1e64dd0435dbJake Hamby private static final String TAG = "CellBroadcastReceiverApp"; 3350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 3450a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby @Override 3550a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby public void onCreate() { 3650a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby super.onCreate(); 3700b87064abfb9d254fbbf72110643d2e626365e6Jake Hamby // TODO: fix strict mode violation from the following method call during app creation 3850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 3950a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby } 4050a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 4157273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby /** List of unread non-emergency alerts to show when user selects the notification. */ 4257273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby private static final ArrayList<CellBroadcastMessage> sNewMessageList = 4357273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby new ArrayList<CellBroadcastMessage>(4); 4400b87064abfb9d254fbbf72110643d2e626365e6Jake Hamby 458524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby /** Latest area info cell broadcast received. */ 468524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby private static CellBroadcastMessage sLatestAreaInfo; 478524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby 4857273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby /** Adds a new unread non-emergency message and returns the current list. */ 4957273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby static ArrayList<CellBroadcastMessage> addNewMessageToList(CellBroadcastMessage message) { 5057273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby sNewMessageList.add(message); 5157273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby return sNewMessageList; 5250a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby } 5350a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby 5457273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby /** Clears the list of unread non-emergency messages. */ 5557273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby static void clearNewMessageList() { 5657273ebfa13f96bf5aba9902b70e2b179fec9e4cJake Hamby sNewMessageList.clear(); 5750a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby } 588524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby 598524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby /** Saves the latest area info broadcast received. */ 608524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby static void setLatestAreaInfo(CellBroadcastMessage areaInfo) { 618524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby sLatestAreaInfo = areaInfo; 628524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby } 638524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby 648524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby /** Returns the latest area info broadcast received. */ 658524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby static CellBroadcastMessage getLatestAreaInfo() { 668524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby return sLatestAreaInfo; 678524c0a36abccf29818d6e18c1080208cfee3ec4Jake Hamby } 6850a624a47ce645a7992e346e40a4e7ec5e0df9b7Jake Hamby} 69