• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 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.voicemail.impl.utils;
18 
19 import android.content.ContentResolver;
20 import android.content.ContentValues;
21 import android.content.Context;
22 import android.net.Uri;
23 import android.provider.VoicemailContract.Voicemails;
24 import android.telecom.PhoneAccountHandle;
25 import com.android.voicemail.impl.Voicemail;
26 import java.util.List;
27 
28 public class VoicemailDatabaseUtil {
29 
30   /**
31    * Inserts a new voicemail into the voicemail content provider.
32    *
33    * @param context The context of the app doing the inserting
34    * @param voicemail Data to be inserted
35    * @return {@link Uri} of the newly inserted {@link Voicemail}
36    * @hide
37    */
insert(Context context, Voicemail voicemail)38   public static Uri insert(Context context, Voicemail voicemail) {
39     ContentResolver contentResolver = context.getContentResolver();
40     ContentValues contentValues = getContentValues(voicemail);
41     return contentResolver.insert(
42         Voicemails.buildSourceUri(context.getPackageName()), contentValues);
43   }
44 
45   /**
46    * Inserts a list of voicemails into the voicemail content provider.
47    *
48    * @param context The context of the app doing the inserting
49    * @param voicemails Data to be inserted
50    * @return the number of voicemails inserted
51    * @hide
52    */
insert(Context context, List<Voicemail> voicemails)53   public static int insert(Context context, List<Voicemail> voicemails) {
54     for (Voicemail voicemail : voicemails) {
55       insert(context, voicemail);
56     }
57     return voicemails.size();
58   }
59 
60   /**
61    * Delete all the voicemails whose source_package field matches this package
62    *
63    * @return the number of voicemails deleted
64    */
deleteAll(Context context)65   public static int deleteAll(Context context) {
66     ContentResolver contentResolver = context.getContentResolver();
67     return contentResolver.delete(Voicemails.buildSourceUri(context.getPackageName()), null, null);
68   }
69 
70   /** Maps structured {@link Voicemail} to {@link ContentValues} in content provider. */
getContentValues(Voicemail voicemail)71   private static ContentValues getContentValues(Voicemail voicemail) {
72     ContentValues contentValues = new ContentValues();
73     contentValues.put(Voicemails.DATE, String.valueOf(voicemail.getTimestampMillis()));
74     contentValues.put(Voicemails.NUMBER, voicemail.getNumber());
75     contentValues.put(Voicemails.DURATION, String.valueOf(voicemail.getDuration()));
76     contentValues.put(Voicemails.SOURCE_PACKAGE, voicemail.getSourcePackage());
77     contentValues.put(Voicemails.SOURCE_DATA, voicemail.getSourceData());
78     contentValues.put(Voicemails.IS_READ, voicemail.isRead() ? 1 : 0);
79     contentValues.put(Voicemails.IS_OMTP_VOICEMAIL, 1);
80 
81     PhoneAccountHandle phoneAccount = voicemail.getPhoneAccount();
82     if (phoneAccount != null) {
83       contentValues.put(
84           Voicemails.PHONE_ACCOUNT_COMPONENT_NAME,
85           phoneAccount.getComponentName().flattenToString());
86       contentValues.put(Voicemails.PHONE_ACCOUNT_ID, phoneAccount.getId());
87     }
88 
89     if (voicemail.getTranscription() != null) {
90       contentValues.put(Voicemails.TRANSCRIPTION, voicemail.getTranscription());
91     }
92 
93     return contentValues;
94   }
95 }
96