• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 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.internal.telephony;
18 
19 import android.app.PendingIntent;
20 import android.content.ContentValues;
21 import android.net.Uri;
22 import android.os.Bundle;
23 
24 /**
25  * Service interface to handle MMS API requests
26  */
27 interface IMms {
28     /**
29      * Send an MMS message with attribution tag.
30      *
31      * @param subId the SIM id
32      * @param callingPkg the package name of the calling app
33      * @param contentUri the content uri from which to read MMS message encoded in standard MMS
34      *  PDU format
35      * @param locationUrl the optional location url for where this message should be sent to
36      * @param configOverrides the carrier-specific messaging configuration values to override for
37      *  sending the message. See {@link android.telephony.SmsManager} for the value names and types.
38      * @param sentIntent if not NULL this <code>PendingIntent</code> is
39      *  broadcast when the message is successfully sent, or failed
40      * @param messageId An id that uniquely identifies the message requested to be sent.
41      * @param attributionTag a tag that attributes the call to a client App.
42      */
sendMessage(int subId, String callingPkg, in Uri contentUri, String locationUrl, in Bundle configOverrides, in PendingIntent sentIntent, in long messageId, String attributionTag)43     void sendMessage(int subId, String callingPkg, in Uri contentUri,
44             String locationUrl, in Bundle configOverrides, in PendingIntent sentIntent,
45             in long messageId, String attributionTag);
46 
47     /**
48      * Download an MMS message using known location and transaction id
49      *
50      * @param subId the SIM id
51      * @param callingPkg the package name of the calling app
52      * @param locationUrl the location URL of the MMS message to be downloaded, usually obtained
53      *  from the MMS WAP push notification
54      * @param contentUri a contentUri to which the downloaded MMS message will be written
55      * @param configOverrides the carrier-specific messaging configuration values to override for
56      *  downloading the message. See {@link android.telephony.SmsManager} for the value names and
57      *  types.
58      * @param downloadedIntent if not NULL this <code>PendingIntent</code> is
59      *  broadcast when the message is downloaded, or the download is failed
60      * @param messageId An id that uniquely identifies the message requested to be downloaded.
61      * @param attributionTag a tag that attributes the call to a client App.
62     */
downloadMessage(int subId, String callingPkg, String locationUrl, in Uri contentUri, in Bundle configOverrides, in PendingIntent downloadedIntent, in long messageId, String attributionTag)63     void downloadMessage(int subId, String callingPkg, String locationUrl,
64             in Uri contentUri, in Bundle configOverrides,
65             in PendingIntent downloadedIntent, in long messageId, String attributionTag);
66 
67     /**
68      * Import a text message into system's SMS store
69      *
70      * @param callingPkg the calling app's package name
71      * @param address the destination address of the message
72      * @param type the type of the message
73      * @param text the message text
74      * @param timestampMillis the message timestamp in milliseconds
75      * @param seen if the message is seen
76      * @param read if the message is read
77      * @return the message URI, null if failed
78      */
importTextMessage(String callingPkg, String address, int type, String text, long timestampMillis, boolean seen, boolean read)79     Uri importTextMessage(String callingPkg, String address, int type, String text,
80             long timestampMillis, boolean seen, boolean read);
81 
82     /**
83       * Import a multimedia message into system's MMS store
84       *
85       * @param callingPkg the package name of the calling app
86       * @param contentUri the content uri from which to read PDU of the message to import
87       * @param messageId the optional message id
88       * @param timestampSecs the message timestamp in seconds
89       * @param seen if the message is seen
90       * @param read if the message is read
91       * @return the message URI, null if failed
92       */
importMultimediaMessage(String callingPkg, in Uri contentUri, String messageId, long timestampSecs, boolean seen, boolean read)93     Uri importMultimediaMessage(String callingPkg, in Uri contentUri, String messageId,
94             long timestampSecs, boolean seen, boolean read);
95 
96     /**
97      * Delete a system stored SMS or MMS message
98      *
99      * @param callingPkg the package name of the calling app
100      * @param messageUri the URI of the stored message
101      * @return true if deletion is successful, false otherwise
102      */
deleteStoredMessage(String callingPkg, in Uri messageUri)103     boolean deleteStoredMessage(String callingPkg, in Uri messageUri);
104 
105     /**
106      * Delete a system stored SMS or MMS thread
107      *
108      * @param callingPkg the package name of the calling app
109      * @param conversationId the ID of the message conversation
110      * @return true if deletion is successful, false otherwise
111      */
deleteStoredConversation(String callingPkg, long conversationId)112     boolean deleteStoredConversation(String callingPkg, long conversationId);
113 
114     /**
115      * Update the status properties of a system stored SMS or MMS message, e.g.
116      * the read status of a message, etc.
117      *
118      * @param callingPkg the package name of the calling app
119      * @param messageUri the URI of the stored message
120      * @param statusValues a list of status properties in key-value pairs to update
121      * @return true if deletion is successful, false otherwise
122      */
updateStoredMessageStatus(String callingPkg, in Uri messageUri, in ContentValues statusValues)123     boolean updateStoredMessageStatus(String callingPkg, in Uri messageUri,
124             in ContentValues statusValues);
125 
126     /**
127      * Archive or unarchive a stored conversation
128      *
129      * @param callingPkg the package name of the calling app
130      * @param conversationId the ID of the message conversation
131      * @param archived true to archive the conversation, false otherwise
132      * @return true if update is successful, false otherwise
133      */
archiveStoredConversation(String callingPkg, long conversationId, boolean archived)134     boolean archiveStoredConversation(String callingPkg, long conversationId, boolean archived);
135 
136     /**
137      * Add a text message draft to system SMS store
138      *
139      * @param callingPkg the package name of the calling app
140      * @param address the destination address of message
141      * @param text the body of the message to send
142      * @return the URI of the stored draft message
143      */
addTextMessageDraft(String callingPkg, String address, String text)144     Uri addTextMessageDraft(String callingPkg, String address, String text);
145 
146     /**
147      * Add a multimedia message draft to system MMS store
148      *
149      * @param callingPkg the package name of the calling app
150      * @param contentUri the content Uri from which to read PDU data of the draft MMS
151      * @return the URI of the stored draft message
152      */
addMultimediaMessageDraft(String callingPkg, in Uri contentUri)153     Uri addMultimediaMessageDraft(String callingPkg, in Uri contentUri);
154 
155     /**
156      * Send a system stored MMS message
157      *
158      * This is used for sending a previously sent, but failed-to-send, message or
159      * for sending a text message that has been stored as a draft.
160      *
161      * @param subId the SIM id
162      * @param callingPkg the package name of the calling app
163      * @param messageUri the URI of the stored message
164      * @param configOverrides the carrier-specific messaging configuration values to override for
165      *  sending the message. See {@link android.telephony.SmsManager} for the value names and types.
166      * @param sentIntent if not NULL this <code>PendingIntent</code> is
167      *  broadcast when the message is successfully sent, or failed
168      */
sendStoredMessage(int subId, String callingPkg, in Uri messageUri, in Bundle configOverrides, in PendingIntent sentIntent)169     void sendStoredMessage(int subId, String callingPkg, in Uri messageUri,
170             in Bundle configOverrides, in PendingIntent sentIntent);
171 
172     /**
173      * Turns on/off the flag to automatically write sent/received SMS/MMS messages into system
174      *
175      * When this flag is on, all SMS/MMS sent/received are stored by system automatically
176      * When this flag is off, only SMS/MMS sent by non-default SMS apps are stored by system
177      * automatically
178      *
179      * This flag can only be changed by default SMS apps
180      *
181      * @param callingPkg the name of the calling app package
182      * @param enabled Whether to enable message auto persisting
183      */
setAutoPersisting(String callingPkg, boolean enabled)184     void setAutoPersisting(String callingPkg, boolean enabled);
185 
186     /**
187      * Get the value of the flag to automatically write sent/received SMS/MMS messages into system
188      *
189      * When this flag is on, all SMS/MMS sent/received are stored by system automatically
190      * When this flag is off, only SMS/MMS sent by non-default SMS apps are stored by system
191      * automatically
192      *
193      * @return the current value of the auto persist flag
194      */
getAutoPersisting()195     boolean getAutoPersisting();
196 }
197