| /* |
| * 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.service; |
| |
| import android.app.Service; |
| import android.content.Context; |
| import android.content.Intent; |
| import android.os.Bundle; |
| import android.os.IBinder; |
| import android.os.RemoteException; |
| |
| import com.android.emailcommon.Api; |
| import com.android.emailcommon.provider.HostAuth; |
| import com.android.emailcommon.service.EmailServiceProxy; |
| import com.android.emailcommon.service.IEmailService; |
| import com.android.emailcommon.service.IEmailServiceCallback; |
| import com.android.emailcommon.service.SearchParams; |
| |
| /** |
| * Utility functions for EmailService support. |
| */ |
| public class EmailServiceUtils { |
| /** |
| * Starts an EmailService by name |
| */ |
| public static void startService(Context context, String intentAction) { |
| context.startService(new Intent(intentAction)); |
| } |
| |
| /** |
| * Returns an {@link IEmailService} for the service; otherwise returns an empty |
| * {@link IEmailService} implementation. |
| * |
| * @param context |
| * @param callback Object to get callback, or can be null |
| */ |
| public static IEmailService getService(Context context, String intentAction, |
| IEmailServiceCallback callback) { |
| return new EmailServiceProxy(context, intentAction, callback); |
| } |
| |
| /** |
| * Determine if the EmailService is available |
| */ |
| public static boolean isServiceAvailable(Context context, String intentAction) { |
| return new EmailServiceProxy(context, intentAction, null).test(); |
| } |
| |
| public static void startExchangeService(Context context) { |
| startService(context, EmailServiceProxy.EXCHANGE_INTENT); |
| } |
| |
| public static IEmailService getExchangeService(Context context, |
| IEmailServiceCallback callback) { |
| return getService(context, EmailServiceProxy.EXCHANGE_INTENT, callback); |
| } |
| |
| public static boolean isExchangeAvailable(Context context) { |
| return isServiceAvailable(context, EmailServiceProxy.EXCHANGE_INTENT); |
| } |
| |
| /** |
| * An empty {@link IEmailService} implementation which is used instead of |
| * {@link com.android.exchange.ExchangeService} 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. |
| */ |
| public static class NullEmailService extends Service implements IEmailService { |
| public static final NullEmailService INSTANCE = new NullEmailService(); |
| |
| public int getApiLevel() { |
| return Api.LEVEL; |
| } |
| |
| 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, boolean background) 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 flags) throws RemoteException { |
| } |
| |
| public void startSync(long mailboxId, boolean userRequest) throws RemoteException { |
| } |
| |
| public void stopSync(long mailboxId) throws RemoteException { |
| } |
| |
| public void updateFolderList(long accountId) throws RemoteException { |
| } |
| |
| public Bundle validate(HostAuth hostAuth) throws RemoteException { |
| return null; |
| } |
| |
| public void deleteAccountPIMData(long accountId) throws RemoteException { |
| } |
| |
| public int searchMessages(long accountId, SearchParams searchParams, long destMailboxId) { |
| return 0; |
| } |
| |
| public IBinder asBinder() { |
| return null; |
| } |
| |
| @Override |
| public IBinder onBind(Intent intent) { |
| return null; |
| } |
| |
| @Override |
| public void sendMail(long accountId) throws RemoteException { |
| } |
| } |
| } |