package com.fsck.k9.helper; import java.lang.reflect.Method; import com.fsck.k9.K9; import android.content.ContentResolver; import android.content.Context; import android.util.Log; public class AutoSyncSdk4 implements IAutoSync { private Method mGetListenForNetworkTickles; private Object mContentService; public void initialize(Context context) throws NoSuchMethodException { /* * There's no documented/official way to query the state of the * auto-sync setting for a normal application in SDK 1.6/API 4. * * We use reflection to get an ContentService object, so we can call its * getListenForNetworkTickles() method. This will return the current * auto-sync state. */ try { Method getContentService = ContentResolver.class.getMethod("getContentService"); mContentService = getContentService.invoke(null); mGetListenForNetworkTickles = mContentService.getClass().getMethod("getListenForNetworkTickles"); } catch (Exception e) { throw new NoSuchMethodException(); } } public boolean getMasterSyncAutomatically() { try { return (Boolean) mGetListenForNetworkTickles.invoke(mContentService); } catch (Exception e) { Log.e(K9.LOG_TAG, "Could not query for network tickle", e); return true; } } }