Home | History | Annotate | Download | only in calllog
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.dialer.calllog;
     18 
     19 import android.app.IntentService;
     20 import android.content.Intent;
     21 import android.net.Uri;
     22 import android.util.Log;
     23 
     24 /**
     25  * Provides operations for managing notifications.
     26  * <p>
     27  * It handles the following actions:
     28  * <ul>
     29  * <li>{@link #ACTION_MARK_NEW_VOICEMAILS_AS_OLD}: marks all the new voicemails in the call log as
     30  * old; this is called when a notification is dismissed.</li>
     31  * <li>{@link #ACTION_UPDATE_NOTIFICATIONS}: updates the content of the new items notification; it
     32  * may include an optional extra {@link #EXTRA_NEW_VOICEMAIL_URI}, containing the URI of the new
     33  * voicemail that has triggered this update (if any).</li>
     34  * </ul>
     35  */
     36 public class CallLogNotificationsService extends IntentService {
     37     private static final String TAG = "CallLogNotificationsService";
     38 
     39     /** Action to mark all the new voicemails as old. */
     40     public static final String ACTION_MARK_NEW_VOICEMAILS_AS_OLD =
     41             "com.android.dialer.calllog.ACTION_MARK_NEW_VOICEMAILS_AS_OLD";
     42 
     43     /**
     44      * Action to update the notifications.
     45      * <p>
     46      * May include an optional extra {@link #EXTRA_NEW_VOICEMAIL_URI}.
     47      */
     48     public static final String ACTION_UPDATE_NOTIFICATIONS =
     49             "com.android.dialer.calllog.UPDATE_NOTIFICATIONS";
     50 
     51     /**
     52      * Extra to included with {@link #ACTION_UPDATE_NOTIFICATIONS} to identify the new voicemail
     53      * that triggered an update.
     54      * <p>
     55      * It must be a {@link Uri}.
     56      */
     57     public static final String EXTRA_NEW_VOICEMAIL_URI = "NEW_VOICEMAIL_URI";
     58 
     59     private CallLogQueryHandler mCallLogQueryHandler;
     60 
     61     public CallLogNotificationsService() {
     62         super("CallLogNotificationsService");
     63     }
     64 
     65     @Override
     66     public void onCreate() {
     67         super.onCreate();
     68         mCallLogQueryHandler = new CallLogQueryHandler(getContentResolver(), null /*listener*/);
     69     }
     70 
     71     @Override
     72     protected void onHandleIntent(Intent intent) {
     73         if (intent == null) {
     74             Log.d(TAG, "onHandleIntent: could not handle null intent");
     75             return;
     76         }
     77         if (ACTION_MARK_NEW_VOICEMAILS_AS_OLD.equals(intent.getAction())) {
     78             mCallLogQueryHandler.markNewVoicemailsAsOld();
     79         } else if (ACTION_UPDATE_NOTIFICATIONS.equals(intent.getAction())) {
     80             Uri voicemailUri = (Uri) intent.getParcelableExtra(EXTRA_NEW_VOICEMAIL_URI);
     81             DefaultVoicemailNotifier.getInstance(this).updateNotification(voicemailUri);
     82         } else {
     83             Log.d(TAG, "onHandleIntent: could not handle: " + intent);
     84         }
     85     }
     86 }
     87