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