Java tutorial
package edu.mit.mobile.android.livingpostcards.sync; /* * Copyright (C) 2012-2013 MIT Mobile Experience Lab * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation version 2 * of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import java.io.IOException; import org.apache.http.client.HttpResponseException; import org.json.JSONException; import android.accounts.Account; import android.accounts.AccountManager; import android.content.ContentProviderClient; import android.content.Context; import android.content.Intent; import android.content.OperationApplicationException; import android.content.SyncResult; import android.os.Bundle; import android.os.RemoteException; import edu.mit.mobile.android.livingpostcards.auth.AuthenticationService; import edu.mit.mobile.android.livingpostcards.data.Card; import edu.mit.mobile.android.livingpostcards.data.CardProvider; import edu.mit.mobile.android.locast.data.NoPublicPath; import edu.mit.mobile.android.locast.data.SyncException; import edu.mit.mobile.android.locast.net.NetworkProtocolException; import edu.mit.mobile.android.locast.sync.AbsLocastAccountSyncService; import edu.mit.mobile.android.locast.sync.SyncEngine; public class AccountSyncService extends AbsLocastAccountSyncService { @Override public String getAuthority() { return CardProvider.AUTHORITY; } /** * Sets the API URL stored in the account info to the desired URL * * @param context * @param account * @param desiredUrl */ public static void setApiUrl(Context context, Account account, String desiredUrl) { final AccountManager am = AccountManager.get(context); am.setUserData(account, AuthenticationService.USERDATA_LOCAST_API_URL, desiredUrl); } @Override public void syncDefaultItems(SyncEngine syncEngine, Account account, Bundle extras, ContentProviderClient provider, SyncResult syncResult) throws HttpResponseException, RemoteException, SyncException, JSONException, IOException, NetworkProtocolException, NoPublicPath, OperationApplicationException, InterruptedException { syncEngine.sync(Card.CONTENT_URI, account, extras, provider, syncResult); startService(new Intent(MediaSyncService.ACTION_SYNC_RESOURCES)); } }