17d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/* 27d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Copyright (C) 2011 The Android Open Source Project 37d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 47d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 57d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * you may not use this file except in compliance with the License. 67d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * You may obtain a copy of the License at 77d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 87d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 97d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * 107d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Unless required by applicable law or agreed to in writing, software 117d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 127d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * See the License for the specific language governing permissions and 147d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * limitations under the License. 157d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 167d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 177d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpackage com.android.phone; 187d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 197d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.app.IntentService; 207d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.ContentValues; 217d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.content.Intent; 227d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonimport android.provider.CallLog.Calls; 237d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 247d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon/** 257d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon * Handles the intent to clear the missed calls that is triggered when a notification is dismissed. 267d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon */ 277d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordonpublic class ClearMissedCallsService extends IntentService { 287d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon /** This action is used to clear missed calls. */ 297d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public static final String ACTION_CLEAR_MISSED_CALLS = 307d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon "com.android.phone.intent.CLEAR_MISSED_CALLS"; 317d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 327d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon private PhoneGlobals mApp; 337d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 347d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public ClearMissedCallsService() { 357d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super(ClearMissedCallsService.class.getSimpleName()); 367d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 377d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 387d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 397d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon public void onCreate() { 407d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon super.onCreate(); 417d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mApp = PhoneGlobals.getInstance(); 427d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 437d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon 447d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon @Override 457d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon protected void onHandleIntent(Intent intent) { 467d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon if (ACTION_CLEAR_MISSED_CALLS.equals(intent.getAction())) { 477d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon // Clear the list of new missed calls. 487d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon ContentValues values = new ContentValues(); 497d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon values.put(Calls.NEW, 0); 507d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon values.put(Calls.IS_READ, 1); 517d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon StringBuilder where = new StringBuilder(); 527d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon where.append(Calls.NEW); 537d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon where.append(" = 1 AND "); 547d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon where.append(Calls.TYPE); 557d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon where.append(" = ?"); 567d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon getContentResolver().update(Calls.CONTENT_URI, values, where.toString(), 577d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon new String[]{ Integer.toString(Calls.MISSED_TYPE) }); 587d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon mApp.notificationMgr.cancelMissedCallNotification(); 597d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 607d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon } 617d4ddf6dc0d7c8158bac3a5dec7936e837e95bddSantos Cordon} 62