| /* |
| * Copyright (C) 2010 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 com.android.email; |
| |
| import com.android.email.mail.MessagingException; |
| import com.android.email.service.EmailServiceProxy; |
| import com.android.email.service.IEmailService; |
| import com.android.email.service.IEmailServiceCallback; |
| import com.android.exchange.CalendarSyncEnabler; |
| import com.android.exchange.SyncManager; |
| |
| import android.content.Context; |
| import android.content.Intent; |
| import android.os.Bundle; |
| import android.os.IBinder; |
| import android.os.RemoteException; |
| |
| /** |
| * Utility functions for Exchange support. |
| */ |
| public class ExchangeUtils { |
| /** |
| * Starts the service for Exchange, if supported. |
| */ |
| public static void startExchangeService(Context context) { |
| //EXCHANGE-REMOVE-SECTION-START |
| context.startService(new Intent(context, SyncManager.class)); |
| //EXCHANGE-REMOVE-SECTION-END |
| } |
| |
| /** |
| * Returns an {@link IEmailService} for the Exchange service, if supported. Otherwise it'll |
| * return an empty {@link IEmailService} implementation. |
| * |
| * @param context |
| * @param callback Object to get callback, or can be null |
| */ |
| public static IEmailService getExchangeEmailService(Context context, |
| IEmailServiceCallback callback) { |
| IEmailService ret = null; |
| //EXCHANGE-REMOVE-SECTION-START |
| ret = new EmailServiceProxy(context, SyncManager.class, callback); |
| //EXCHANGE-REMOVE-SECTION-END |
| if (ret == null) { |
| ret = NullEmailService.INSTANCE; |
| } |
| return ret; |
| } |
| |
| /** |
| * Enable calendar sync for all the existing exchange accounts, and post a notification if any. |
| */ |
| public static void enableEasCalendarSync(Context context) { |
| //EXCHANGE-REMOVE-SECTION-START |
| new CalendarSyncEnabler(context).enableEasCalendarSync(); |
| //EXCHANGE-REMOVE-SECTION-END |
| } |
| |
| /** |
| * An empty {@link IEmailService} implementation which is used instead of |
| * {@link com.android.exchange.SyncManager} on the build with no exchange support. |
| * |
| * <p>In theory, the service in question isn't used on the no-exchange-support build, |
| * because we won't have any exchange accounts in that case, so we wouldn't have to have this |
| * class. However, there are a few places we do use the service even if there's no exchange |
| * accounts (e.g. setLogging), so this class is added for safety and simplicity. |
| */ |
| private static class NullEmailService implements IEmailService { |
| public static final NullEmailService INSTANCE = new NullEmailService(); |
| |
| public Bundle autoDiscover(String userName, String password) throws RemoteException { |
| return Bundle.EMPTY; |
| } |
| |
| public boolean createFolder(long accountId, String name) throws RemoteException { |
| return false; |
| } |
| |
| public boolean deleteFolder(long accountId, String name) throws RemoteException { |
| return false; |
| } |
| |
| public void hostChanged(long accountId) throws RemoteException { |
| } |
| |
| public void loadAttachment(long attachmentId, String destinationFile, |
| String contentUriString) throws RemoteException { |
| } |
| |
| public void loadMore(long messageId) throws RemoteException { |
| } |
| |
| public boolean renameFolder(long accountId, String oldName, String newName) |
| throws RemoteException { |
| return false; |
| } |
| |
| public void sendMeetingResponse(long messageId, int response) throws RemoteException { |
| } |
| |
| public void setCallback(IEmailServiceCallback cb) throws RemoteException { |
| } |
| |
| public void setLogging(int on) throws RemoteException { |
| } |
| |
| public void startSync(long mailboxId) throws RemoteException { |
| } |
| |
| public void stopSync(long mailboxId) throws RemoteException { |
| } |
| |
| public void updateFolderList(long accountId) throws RemoteException { |
| } |
| |
| public int validate(String protocol, String host, String userName, String password, |
| int port, boolean ssl, boolean trustCertificates) throws RemoteException { |
| return MessagingException.UNSPECIFIED_EXCEPTION; |
| } |
| |
| public IBinder asBinder() { |
| return null; |
| } |
| } |
| } |