diff options
Diffstat (limited to 'src/android/bluetooth/client/pbap/BluetoothPbapClient.java')
-rw-r--r-- | src/android/bluetooth/client/pbap/BluetoothPbapClient.java | 857 |
1 files changed, 0 insertions, 857 deletions
diff --git a/src/android/bluetooth/client/pbap/BluetoothPbapClient.java b/src/android/bluetooth/client/pbap/BluetoothPbapClient.java deleted file mode 100644 index b1fc441..0000000 --- a/src/android/bluetooth/client/pbap/BluetoothPbapClient.java +++ /dev/null @@ -1,857 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.bluetooth.client.pbap; - -import android.accounts.Account; -import android.bluetooth.BluetoothDevice; -import android.os.Handler; -import android.os.Message; -import android.util.Log; - -import java.lang.ref.WeakReference; - -/** - * Public API to control Phone Book Profile (PCE role only). - * <p> - * This class defines methods that shall be used by application for the - * retrieval of phone book objects from remote device. - * <p> - * How to connect to remote device which is acting in PSE role: - * <ul> - * <li>Create a <code>BluetoothDevice</code> object which corresponds to remote - * device in PSE role; - * <li>Create an instance of <code>BluetoothPbapClient</code> class, passing - * <code>BluetothDevice</code> object along with a <code>Handler</code> to it; - * <li>Use {@link #setPhoneBookFolderRoot}, {@link #setPhoneBookFolderUp} and - * {@link #setPhoneBookFolderDown} to navigate in virtual phone book folder - * structure - * <li>Use {@link #pullPhoneBookSize} or {@link #pullVcardListingSize} to - * retrieve the size of selected phone book - * <li>Use {@link #pullPhoneBook} to retrieve phone book entries - * <li>Use {@link #pullVcardListing} to retrieve list of entries in the phone - * book - * <li>Use {@link #pullVcardEntry} to pull single entry from the phone book - * </ul> - * Upon completion of each call above PCE will notify application if operation - * completed successfully (along with results) or failed. - * <p> - * Therefore, application should handle following events in its message queue - * handler: - * <ul> - * <li><code>EVENT_PULL_PHONE_BOOK_SIZE_DONE</code> - * <li><code>EVENT_PULL_VCARD_LISTING_SIZE_DONE</code> - * <li><code>EVENT_PULL_PHONE_BOOK_DONE</code> - * <li><code>EVENT_PULL_VCARD_LISTING_DONE</code> - * <li><code>EVENT_PULL_VCARD_ENTRY_DONE</code> - * <li><code>EVENT_SET_PHONE_BOOK_DONE</code> - * </ul> - * and - * <ul> - * <li><code>EVENT_PULL_PHONE_BOOK_SIZE_ERROR</code> - * <li><code>EVENT_PULL_VCARD_LISTING_SIZE_ERROR</code> - * <li><code>EVENT_PULL_PHONE_BOOK_ERROR</code> - * <li><code>EVENT_PULL_VCARD_LISTING_ERROR</code> - * <li><code>EVENT_PULL_VCARD_ENTRY_ERROR</code> - * <li><code>EVENT_SET_PHONE_BOOK_ERROR</code> - * </ul> - * <code>connect</code> and <code>disconnect</code> methods are introduced for - * testing purposes. An application does not need to use them as the session - * connection and disconnection happens automatically internally. - */ -public class BluetoothPbapClient { - private static final boolean DBG = true; - - private static final String TAG = "BluetoothPbapClient"; - - /** - * Path to local incoming calls history object - */ - public static final String ICH_PATH = "telecom/ich.vcf"; - - /** - * Path to local outgoing calls history object - */ - public static final String OCH_PATH = "telecom/och.vcf"; - - /** - * Path to local missed calls history object - */ - public static final String MCH_PATH = "telecom/mch.vcf"; - - /** - * Path to local combined calls history object - */ - public static final String CCH_PATH = "telecom/cch.vcf"; - - /** - * Path to local main phone book object - */ - public static final String PB_PATH = "telecom/pb.vcf"; - - /** - * Path to incoming calls history object stored on the phone's SIM card - */ - public static final String SIM_ICH_PATH = "SIM1/telecom/ich.vcf"; - - /** - * Path to outgoing calls history object stored on the phone's SIM card - */ - public static final String SIM_OCH_PATH = "SIM1/telecom/och.vcf"; - - /** - * Path to missed calls history object stored on the phone's SIM card - */ - public static final String SIM_MCH_PATH = "SIM1/telecom/mch.vcf"; - - /** - * Path to combined calls history object stored on the phone's SIM card - */ - public static final String SIM_CCH_PATH = "SIM1/telecom/cch.vcf"; - - /** - * Path to main phone book object stored on the phone's SIM card - */ - public static final String SIM_PB_PATH = "SIM1/telecom/pb.vcf"; - - /** - * Indicates to server that default sorting order shall be used for vCard - * listing. - */ - public static final byte ORDER_BY_DEFAULT = -1; - - /** - * Indicates to server that indexed sorting order shall be used for vCard - * listing. - */ - public static final byte ORDER_BY_INDEXED = 0; - - /** - * Indicates to server that alphabetical sorting order shall be used for the - * vCard listing. - */ - public static final byte ORDER_BY_ALPHABETICAL = 1; - - /** - * Indicates to server that phonetical (based on sound attribute) sorting - * order shall be used for the vCard listing. - */ - public static final byte ORDER_BY_PHONETIC = 2; - - /** - * Indicates to server that Name attribute of vCard shall be used to carry - * out the search operation on - */ - public static final byte SEARCH_ATTR_NAME = 0; - - /** - * Indicates to server that Number attribute of vCard shall be used to carry - * out the search operation on - */ - public static final byte SEARCH_ATTR_NUMBER = 1; - - /** - * Indicates to server that Sound attribute of vCard shall be used to carry - * out the search operation - */ - public static final byte SEARCH_ATTR_SOUND = 2; - - /** - * VCard format version 2.1 - */ - public static final byte VCARD_TYPE_21 = 0; - - /** - * VCard format version 3.0 - */ - public static final byte VCARD_TYPE_30 = 1; - - /* 64-bit mask used to filter out VCard fields */ - // TODO: Think of extracting to separate class - public static final long VCARD_ATTR_VERSION = 0x000000000000000001; - public static final long VCARD_ATTR_FN = 0x000000000000000002; - public static final long VCARD_ATTR_N = 0x000000000000000004; - public static final long VCARD_ATTR_PHOTO = 0x000000000000000008; - public static final long VCARD_ATTR_BDAY = 0x000000000000000010; - public static final long VCARD_ATTR_ADDR = 0x000000000000000020; - public static final long VCARD_ATTR_LABEL = 0x000000000000000040; - public static final long VCARD_ATTR_TEL = 0x000000000000000080; - public static final long VCARD_ATTR_EMAIL = 0x000000000000000100; - public static final long VCARD_ATTR_MAILER = 0x000000000000000200; - public static final long VCARD_ATTR_TZ = 0x000000000000000400; - public static final long VCARD_ATTR_GEO = 0x000000000000000800; - public static final long VCARD_ATTR_TITLE = 0x000000000000001000; - public static final long VCARD_ATTR_ROLE = 0x000000000000002000; - public static final long VCARD_ATTR_LOGO = 0x000000000000004000; - public static final long VCARD_ATTR_AGENT = 0x000000000000008000; - public static final long VCARD_ATTR_ORG = 0x000000000000010000; - public static final long VCARD_ATTR_NOTE = 0x000000000000020000; - public static final long VCARD_ATTR_REV = 0x000000000000040000; - public static final long VCARD_ATTR_SOUND = 0x000000000000080000; - public static final long VCARD_ATTR_URL = 0x000000000000100000; - public static final long VCARD_ATTR_UID = 0x000000000000200000; - public static final long VCARD_ATTR_KEY = 0x000000000000400000; - public static final long VCARD_ATTR_NICKNAME = 0x000000000000800000; - public static final long VCARD_ATTR_CATEGORIES = 0x000000000001000000; - public static final long VCARD_ATTR_PROID = 0x000000000002000000; - public static final long VCARD_ATTR_CLASS = 0x000000000004000000; - public static final long VCARD_ATTR_SORT_STRING = 0x000000000008000000; - public static final long VCARD_ATTR_X_IRMC_CALL_DATETIME = - 0x000000000010000000; - - /** - * Maximal number of entries of the phone book that PCE can handle - */ - public static final short MAX_LIST_COUNT = (short) 0xFFFF; - - /** - * Event propagated upon completion of <code>setPhoneBookFolderRoot</code>, - * <code>setPhoneBookFolderUp</code> or <code>setPhoneBookFolderDown</code> - * request. - * <p> - * This event indicates that request completed successfully. - * @see #setPhoneBookFolderRoot - * @see #setPhoneBookFolderUp - * @see #setPhoneBookFolderDown - */ - public static final int EVENT_SET_PHONE_BOOK_DONE = 1; - - /** - * Event propagated upon completion of <code>pullPhoneBook</code> request. - * <p> - * This event carry on results of the request. - * <p> - * The resulting message contains: - * <table> - * <tr> - * <td><code>msg.arg1</code></td> - * <td>newMissedCalls parameter (only in case of missed calls history object - * request)</td> - * </tr> - * <tr> - * <td><code>msg.obj</code></td> - * <td>which is a list of <code>VCardEntry</code> objects</td> - * </tr> - * </table> - * @see #pullPhoneBook - */ - public static final int EVENT_PULL_PHONE_BOOK_DONE = 2; - - /** - * Event propagated upon completion of <code>pullVcardListing</code> - * request. - * <p> - * This event carry on results of the request. - * <p> - * The resulting message contains: - * <table> - * <tr> - * <td><code>msg.arg1</code></td> - * <td>newMissedCalls parameter (only in case of missed calls history object - * request)</td> - * </tr> - * <tr> - * <td><code>msg.obj</code></td> - * <td>which is a list of <code>BluetoothPbapCard</code> objects</td> - * </tr> - * </table> - * @see #pullVcardListing - */ - public static final int EVENT_PULL_VCARD_LISTING_DONE = 3; - - /** - * Event propagated upon completion of <code>pullVcardEntry</code> request. - * <p> - * This event carry on results of the request. - * <p> - * The resulting message contains: - * <table> - * <tr> - * <td><code>msg.obj</code></td> - * <td>vCard as and object of type <code>VCardEntry</code></td> - * </tr> - * </table> - * @see #pullVcardEntry - */ - public static final int EVENT_PULL_VCARD_ENTRY_DONE = 4; - - /** - * Event propagated upon completion of <code>pullPhoneBookSize</code> - * request. - * <p> - * This event carry on results of the request. - * <p> - * The resulting message contains: - * <table> - * <tr> - * <td><code>msg.arg1</code></td> - * <td>size of the phone book</td> - * </tr> - * </table> - * @see #pullPhoneBookSize - */ - public static final int EVENT_PULL_PHONE_BOOK_SIZE_DONE = 5; - - /** - * Event propagated upon completion of <code>pullVcardListingSize</code> - * request. - * <p> - * This event carry on results of the request. - * <p> - * The resulting message contains: - * <table> - * <tr> - * <td><code>msg.arg1</code></td> - * <td>size of the phone book listing</td> - * </tr> - * </table> - * @see #pullVcardListingSize - */ - public static final int EVENT_PULL_VCARD_LISTING_SIZE_DONE = 6; - - /** - * Event propagated upon completion of <code>setPhoneBookFolderRoot</code>, - * <code>setPhoneBookFolderUp</code> or <code>setPhoneBookFolderDown</code> - * request. This event indicates an error during operation. - */ - public static final int EVENT_SET_PHONE_BOOK_ERROR = 101; - - /** - * Event propagated upon completion of <code>pullPhoneBook</code> request. - * This event indicates an error during operation. - */ - public static final int EVENT_PULL_PHONE_BOOK_ERROR = 102; - - /** - * Event propagated upon completion of <code>pullVcardListing</code> - * request. This event indicates an error during operation. - */ - public static final int EVENT_PULL_VCARD_LISTING_ERROR = 103; - - /** - * Event propagated upon completion of <code>pullVcardEntry</code> request. - * This event indicates an error during operation. - */ - public static final int EVENT_PULL_VCARD_ENTRY_ERROR = 104; - - /** - * Event propagated upon completion of <code>pullPhoneBookSize</code> - * request. This event indicates an error during operation. - */ - public static final int EVENT_PULL_PHONE_BOOK_SIZE_ERROR = 105; - - /** - * Event propagated upon completion of <code>pullVcardListingSize</code> - * request. This event indicates an error during operation. - */ - public static final int EVENT_PULL_VCARD_LISTING_SIZE_ERROR = 106; - - /** - * Event propagated when PCE has been connected to PSE - */ - public static final int EVENT_SESSION_CONNECTED = 201; - - /** - * Event propagated when PCE has been disconnected from PSE - */ - public static final int EVENT_SESSION_DISCONNECTED = 202; - public static final int EVENT_SESSION_AUTH_REQUESTED = 203; - public static final int EVENT_SESSION_AUTH_TIMEOUT = 204; - - public enum ConnectionState { - DISCONNECTED, CONNECTING, CONNECTED, DISCONNECTING; - } - - private final Account mAccount; - private final Handler mClientHandler; - private final BluetoothPbapSession mSession; - private ConnectionState mConnectionState = ConnectionState.DISCONNECTED; - - private SessionHandler mSessionHandler; - - private static class SessionHandler extends Handler { - - private final WeakReference<BluetoothPbapClient> mClient; - - SessionHandler(BluetoothPbapClient client) { - mClient = new WeakReference<BluetoothPbapClient>(client); - } - - @Override - public void handleMessage(Message msg) { - Log.d(TAG, "handleMessage: what=" + msg.what); - - BluetoothPbapClient client = mClient.get(); - if (client == null) { - return; - } - - switch (msg.what) { - case BluetoothPbapSession.REQUEST_FAILED: - { - BluetoothPbapRequest req = (BluetoothPbapRequest) msg.obj; - - if (req instanceof BluetoothPbapRequestPullPhoneBookSize) { - client.sendToClient(EVENT_PULL_PHONE_BOOK_SIZE_ERROR); - } else if (req instanceof BluetoothPbapRequestPullVcardListingSize) { - client.sendToClient(EVENT_PULL_VCARD_LISTING_SIZE_ERROR); - } else if (req instanceof BluetoothPbapRequestPullPhoneBook) { - client.sendToClient(EVENT_PULL_PHONE_BOOK_ERROR); - } else if (req instanceof BluetoothPbapRequestPullVcardListing) { - client.sendToClient(EVENT_PULL_VCARD_LISTING_ERROR); - } else if (req instanceof BluetoothPbapRequestPullVcardEntry) { - client.sendToClient(EVENT_PULL_VCARD_ENTRY_ERROR); - } else if (req instanceof BluetoothPbapRequestSetPath) { - client.sendToClient(EVENT_SET_PHONE_BOOK_ERROR); - } - - break; - } - - case BluetoothPbapSession.REQUEST_COMPLETED: - { - BluetoothPbapRequest req = (BluetoothPbapRequest) msg.obj; - - if (req instanceof BluetoothPbapRequestPullPhoneBookSize) { - int size = ((BluetoothPbapRequestPullPhoneBookSize) req).getSize(); - client.sendToClient(EVENT_PULL_PHONE_BOOK_SIZE_DONE, size); - - } else if (req instanceof BluetoothPbapRequestPullVcardListingSize) { - int size = ((BluetoothPbapRequestPullVcardListingSize) req).getSize(); - client.sendToClient(EVENT_PULL_VCARD_LISTING_SIZE_DONE, size); - - } else if (req instanceof BluetoothPbapRequestPullPhoneBook) { - BluetoothPbapRequestPullPhoneBook r = (BluetoothPbapRequestPullPhoneBook) req; - client.sendToClient(EVENT_PULL_PHONE_BOOK_DONE, r.getNewMissedCalls(), - r.getList()); - - } else if (req instanceof BluetoothPbapRequestPullVcardListing) { - BluetoothPbapRequestPullVcardListing r = (BluetoothPbapRequestPullVcardListing) req; - client.sendToClient(EVENT_PULL_VCARD_LISTING_DONE, r.getNewMissedCalls(), - r.getList()); - - } else if (req instanceof BluetoothPbapRequestPullVcardEntry) { - BluetoothPbapRequestPullVcardEntry r = (BluetoothPbapRequestPullVcardEntry) req; - client.sendToClient(EVENT_PULL_VCARD_ENTRY_DONE, r.getVcard()); - - } else if (req instanceof BluetoothPbapRequestSetPath) { - client.sendToClient(EVENT_SET_PHONE_BOOK_DONE); - } - - break; - } - - case BluetoothPbapSession.AUTH_REQUESTED: - client.sendToClient(EVENT_SESSION_AUTH_REQUESTED); - break; - - case BluetoothPbapSession.AUTH_TIMEOUT: - client.sendToClient(EVENT_SESSION_AUTH_TIMEOUT); - break; - - /* - * app does not need to know when session is connected since - * OBEX session is managed inside BluetoothPbapSession - * automatically - we add this only so app can visualize PBAP - * connection status in case it wants to - */ - - case BluetoothPbapSession.SESSION_CONNECTING: - client.mConnectionState = ConnectionState.CONNECTING; - break; - - case BluetoothPbapSession.SESSION_CONNECTED: - client.mConnectionState = ConnectionState.CONNECTED; - client.sendToClient(EVENT_SESSION_CONNECTED); - break; - - case BluetoothPbapSession.SESSION_DISCONNECTED: - client.mConnectionState = ConnectionState.DISCONNECTED; - client.sendToClient(EVENT_SESSION_DISCONNECTED); - break; - } - } - }; - - private void sendToClient(int eventId) { - sendToClient(eventId, 0, null); - } - - private void sendToClient(int eventId, int param) { - sendToClient(eventId, param, null); - } - - private void sendToClient(int eventId, Object param) { - sendToClient(eventId, 0, param); - } - - private void sendToClient(int eventId, int param1, Object param2) { - mClientHandler.obtainMessage(eventId, param1, 0, param2).sendToTarget(); - } - - /** - * Constructs PCE object - * - * @param device BluetoothDevice that corresponds to remote acting in PSE - * role - * @param account the account to which contacts will be added {@see #pullPhoneBook}. - * @param handler the handle that will be used by PCE to notify events and - * results to application - * @throws NullPointerException - */ - public BluetoothPbapClient(BluetoothDevice device, Account account, Handler handler) { - if (DBG) { - Log.d(TAG, " device " + device + " account " + account); - } - if (device == null) { - throw new NullPointerException("BluetoothDevice is null"); - } - - mAccount = account; - - mClientHandler = handler; - - mSessionHandler = new SessionHandler(this); - - mSession = new BluetoothPbapSession(device, mSessionHandler); - } - - /** - * Starts a pbap session. <pb> This method set up rfcomm session, obex - * session and waits for requests to be transfered to PSE. - */ - public void connect() { - mSession.start(); - } - - @Override - public void finalize() { - if (mSession != null) { - mSession.stop(); - } - } - - /** - * Stops all the active transactions and disconnects from the server. - */ - public void disconnect() { - mSession.stop(); - } - - /** - * Aborts current request, if any - */ - public void abort() { - mSession.abort(); - } - - public ConnectionState getState() { - return mConnectionState; - } - - /** - * Sets current folder to root - * - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_SET_PHONE_BOOK_DONE} or - * {@link #EVENT_SET_PHONE_BOOK_ERROR} in case of failure - */ - public boolean setPhoneBookFolderRoot() { - BluetoothPbapRequest req = new BluetoothPbapRequestSetPath(false); - return mSession.makeRequest(req); - } - - /** - * Sets current folder to parent - * - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_SET_PHONE_BOOK_DONE} or - * {@link #EVENT_SET_PHONE_BOOK_ERROR} in case of failure - */ - public boolean setPhoneBookFolderUp() { - BluetoothPbapRequest req = new BluetoothPbapRequestSetPath(true); - return mSession.makeRequest(req); - } - - /** - * Sets current folder to selected sub-folder - * - * @param folder the name of the sub-folder - * @return @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_SET_PHONE_BOOK_DONE} or - * {@link #EVENT_SET_PHONE_BOOK_ERROR} in case of failure - */ - public boolean setPhoneBookFolderDown(String folder) { - BluetoothPbapRequest req = new BluetoothPbapRequestSetPath(folder); - return mSession.makeRequest(req); - } - - /** - * Requests for the number of entries in the phone book. - * - * @param pbName absolute path to the phone book - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_PHONE_BOOK_SIZE_DONE} or - * {@link #EVENT_PULL_PHONE_BOOK_SIZE_ERROR} in case of failure - */ - public boolean pullPhoneBookSize(String pbName) { - BluetoothPbapRequestPullPhoneBookSize req = new BluetoothPbapRequestPullPhoneBookSize( - pbName); - - return mSession.makeRequest(req); - } - - /** - * Requests for the number of entries in the phone book listing. - * - * @param folder the name of the folder to be retrieved - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_SIZE_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_SIZE_ERROR} in case of failure - */ - public boolean pullVcardListingSize(String folder) { - BluetoothPbapRequestPullVcardListingSize req = new BluetoothPbapRequestPullVcardListingSize( - folder); - - return mSession.makeRequest(req); - } - - /** - * Pulls complete phone book. This method pulls phone book which entries are - * of <code>VCARD_TYPE_21</code> type and each single vCard contains minimal - * required set of fields and the number of entries in response is not - * limited. - * - * @param pbName absolute path to the phone book - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_PHONE_BOOK_DONE} or - * {@link #EVENT_PULL_PHONE_BOOK_ERROR} in case of failure - */ - public boolean pullPhoneBook(String pbName) { - return pullPhoneBook(pbName, 0, VCARD_TYPE_21, 0, 0); - } - - /** - * Pulls complete phone book. This method pulls all entries from the phone - * book. - * - * @param pbName absolute path to the phone book - * @param filter bit mask which indicates which fields of the vCard shall be - * included in each entry of the resulting list - * @param format vCard format of entries in the resulting list - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_PHONE_BOOK_DONE} or - * {@link #EVENT_PULL_PHONE_BOOK_ERROR} in case of failure - */ - public boolean pullPhoneBook(String pbName, long filter, byte format) { - return pullPhoneBook(pbName, filter, format, 0, 0); - } - - /** - * Pulls complete phone book. This method pulls entries from the phone book - * limited to the number of <code>maxListCount</code> starting from the - * position of <code>listStartOffset</code>. - * <p> - * The resulting list contains vCard objects in version - * <code>VCARD_TYPE_21</code> which in turns contain minimal required set of - * vCard fields. - * - * @param pbName absolute path to the phone book - * @param maxListCount limits number of entries in the response - * @param listStartOffset offset to the first entry of the list that would - * be returned - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_PHONE_BOOK_DONE} or - * {@link #EVENT_PULL_PHONE_BOOK_ERROR} in case of failure - */ - public boolean pullPhoneBook(String pbName, int maxListCount, int listStartOffset) { - return pullPhoneBook(pbName, 0, VCARD_TYPE_21, maxListCount, listStartOffset); - } - - /** - * Pulls complete phone book. - * - * @param pbName absolute path to the phone book - * @param filter bit mask which indicates which fields of the vCard hall be - * included in each entry of the resulting list - * @param format vCard format of entries in the resulting list - * @param maxListCount limits number of entries in the response - * @param listStartOffset offset to the first entry of the list that would - * be returned - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_PHONE_BOOK_DONE} or - * {@link #EVENT_PULL_PHONE_BOOK_ERROR} in case of failure - */ - public boolean pullPhoneBook(String pbName, long filter, byte format, int maxListCount, - int listStartOffset) { - BluetoothPbapRequest req = new BluetoothPbapRequestPullPhoneBook( - pbName, mAccount, filter, format, maxListCount, listStartOffset); - return mSession.makeRequest(req); - } - - /** - * Pulls list of entries in the phone book. - * <p> - * This method pulls the list of entries in the <code>folder</code>. - * - * @param folder the name of the folder to be retrieved - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder) { - return pullVcardListing(folder, ORDER_BY_DEFAULT, SEARCH_ATTR_NAME, null, 0, 0); - } - - /** - * Pulls list of entries in the <code>folder</code>. - * - * @param folder the name of the folder to be retrieved - * @param order the sorting order of the resulting list of entries - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder, byte order) { - return pullVcardListing(folder, order, SEARCH_ATTR_NAME, null, 0, 0); - } - - /** - * Pulls list of entries in the <code>folder</code>. Only entries where - * <code>searchAttr</code> attribute of vCard matches <code>searchVal</code> - * will be listed. - * - * @param folder the name of the folder to be retrieved - * @param searchAttr vCard attribute which shall be used to carry out search - * operation on - * @param searchVal text string used by matching routine to match the value - * of the attribute indicated by SearchAttr - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder, byte searchAttr, String searchVal) { - return pullVcardListing(folder, ORDER_BY_DEFAULT, searchAttr, searchVal, 0, 0); - } - - /** - * Pulls list of entries in the <code>folder</code>. - * - * @param folder the name of the folder to be retrieved - * @param order the sorting order of the resulting list of entries - * @param maxListCount limits number of entries in the response - * @param listStartOffset offset to the first entry of the list that would - * be returned - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder, byte order, int maxListCount, - int listStartOffset) { - return pullVcardListing(folder, order, SEARCH_ATTR_NAME, null, maxListCount, - listStartOffset); - } - - /** - * Pulls list of entries in the <code>folder</code>. - * - * @param folder the name of the folder to be retrieved - * @param maxListCount limits number of entries in the response - * @param listStartOffset offset to the first entry of the list that would - * be returned - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder, int maxListCount, int listStartOffset) { - return pullVcardListing(folder, ORDER_BY_DEFAULT, SEARCH_ATTR_NAME, null, maxListCount, - listStartOffset); - } - - /** - * Pulls list of entries in the <code>folder</code>. - * - * @param folder the name of the folder to be retrieved - * @param order the sorting order of the resulting list of entries - * @param searchAttr vCard attribute which shall be used to carry out search - * operation on - * @param searchVal text string used by matching routine to match the value - * of the attribute indicated by SearchAttr - * @param maxListCount limits number of entries in the response - * @param listStartOffset offset to the first entry of the list that would - * be returned - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_LISTING_DONE} or - * {@link #EVENT_PULL_VCARD_LISTING_ERROR} in case of failure - */ - public boolean pullVcardListing(String folder, byte order, byte searchAttr, - String searchVal, int maxListCount, int listStartOffset) { - BluetoothPbapRequest req = new BluetoothPbapRequestPullVcardListing(folder, order, - searchAttr, searchVal, maxListCount, listStartOffset); - return mSession.makeRequest(req); - } - - /** - * Pulls single vCard object - * - * @param handle handle to the vCard which shall be pulled - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_DONE} or - * @link #EVENT_PULL_VCARD_ERROR} in case of failure - */ - public boolean pullVcardEntry(String handle) { - return pullVcardEntry(handle, (byte) 0, VCARD_TYPE_21); - } - - /** - * Pulls single vCard object - * - * @param handle handle to the vCard which shall be pulled - * @param filter bit mask of the vCard fields that shall be included in the - * resulting vCard - * @param format resulting vCard version - * @return <code>true</code> if request has been sent successfully; - * <code>false</code> otherwise; upon completion PCE sends - * {@link #EVENT_PULL_VCARD_DONE} - * @link #EVENT_PULL_VCARD_ERROR} in case of failure - */ - public boolean pullVcardEntry(String handle, long filter, byte format) { - BluetoothPbapRequest req = - new BluetoothPbapRequestPullVcardEntry(handle, mAccount, filter, format); - return mSession.makeRequest(req); - } - - public boolean setAuthResponse(String key) { - Log.d(TAG, " setAuthResponse key=" + key); - return mSession.setAuthResponse(key); - } -} |