sync Adpater example
 
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.AbstractThreadedSyncAdapter;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.OperationApplicationException;
import android.content.SyncResult;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import android.widget.Toast;
 
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
 
import javax.net.ssl.HttpsURLConnection;
 
/**
 * Created by root on 18/8/17.
 */
 
public class ExpenditureSyncAdapter extends AbstractThreadedSyncAdapter {
    public static final String WebBaseURL="http://10.0.2.2/internet.itd";//";//"";
    private static final String TAG="Hisab_Sync";
    private final ContentResolver resolver;
    private static final String PROVIDER_NAME = "com.xxxxx.xxxxxx.ExpenditureProvider";
    private static final Uri CONTENT_URI = Uri.parse("content://" + PROVIDER_NAME + "/expenditures");
    public ExpenditureSyncAdapter(Context context,boolean autoInitialize){
        super(context,autoInitialize);
        //accountManager=AccountManager.get(context);
        this.resolver = context.getContentResolver();
    }
 
    @Override
    public void onPerformSync(Account account, Bundle extras, String authority,
                              ContentProviderClient provider, SyncResult syncResult) {
        Log.e(TAG,"start synchronization");
        SyncResult syncResult1=new SyncResult();
        //sending records to server on by one
        try {
            final String sa1 = "N%"; // contains an "A"
            Cursor c1 = resolver.query(CONTENT_URI, null, " onServer like ?", new String[]{sa1}, null);
            if(c1.moveToFirst()) {
                do {
                    String _idupdating=c1.getString(c1.getColumnIndex("_id"));
                    Log.e(TAG, "uploading data on server for id:"+_idupdating);
                    InputStream inpstm = null;
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("_id", _idupdating));
                    nameValuePairs.add(new BasicNameValuePair("expType", c1.getString(c1.getColumnIndex("expType"))));
                    nameValuePairs.add(new BasicNameValuePair("amount", c1.getString(c1.getColumnIndex("amount"))));
                    nameValuePairs.add(new BasicNameValuePair("month", c1.getString(c1.getColumnIndex("month"))));
                    nameValuePairs.add(new BasicNameValuePair("year",c1.getString(c1.getColumnIndex("year"))));
                    nameValuePairs.add(new BasicNameValuePair("date_time", c1.getString(c1.getColumnIndex("date_time"))));
                    nameValuePairs.add(new BasicNameValuePair("deletedonApp", c1.getString(c1.getColumnIndex("deletedonApp"))));
                    nameValuePairs.add(new BasicNameValuePair("accountname", c1.getString(c1.getColumnIndex("accountname"))));
                    try {
 
                        HttpClient httpClient = new DefaultHttpClient();
                        HttpPost httpPost = new HttpPost(
                                WebBaseURL +"/addhxxxxxxxxxdatatoserver.php");
                        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                        HttpResponse response = httpClient.execute(httpPost);
                        HttpEntity entity = response.getEntity();
                        inpstm=entity.getContent();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(inpstm, "UTF-8"), 8);
                        StringBuilder sb = new StringBuilder();
                        String line = null;
                        while ((line = reader.readLine()) != null)
                        {
                            sb.append(line + " ");
                        }
                        //result = sb.toString();
 
                        //one record , now // TODO: 27/8/17 please update UI in the list
 
                    }
                    catch (ClientProtocolException e) {
                        Log.e(TAG, e.getMessage());
                    } catch (UnsupportedEncodingException e) {
                        Log.e(TAG, e.getMessage());
                    } catch (IOException e) {
                        Log.e(TAG, e.getMessage());
                    }
                    catch (Exception e) {
                        Log.e(TAG, e.getMessage());
                    }
 
                } while (c1.moveToNext());
            }
            c1.close();
 
        }
        catch (Exception e) {
            Log.e(TAG, "After loop:=> "+e.getMessage());
        }
        getContext().getContentResolver().notifyChange(CONTENT_URI, null, false);
 
 
        //retriving data from server
        String accountname = account.name;
        Log.e(TAG,"account.name in onpermsync: "+accountname);
        InputStream inpstm = null;
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("accountname", accountname));
 
        String result = null;
 
        try{
            URL url=new URL(WebBaseURL +"/getxxxxxxxxxatafromserver.php");
            HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(
                    WebBaseURL +"/gethisabdatafromserver.php");
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            inpstm=entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line = null;
 
            while ((line = reader.readLine()) != null)
            {
                sb.append(line + " ");
            }
 
            result = sb.toString();
            Log.e(TAG,"finished syncronization");
        }
        catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
 
        //parsing data
        if(result!=null) {
            Log.e(TAG, result);
            String s = result.trim();
            try {
                JSONObject jsonObject=new JSONObject(s);
                if(jsonObject!=null)
                {
                    JSONArray jsonArray=jsonObject.getJSONArray("item");
                    if(jsonArray!=null)
                    {
                        //txttxtWelcomeText.setText(jsonArray.length()+
                        // " "+jsonObject.length() + " ");
                        for(int i=0;i<jsonArray.length();i++)
                        {
                            JSONObject c=jsonArray.getJSONObject(i);
                            String id=c.getString("_id");
                            String expType=c.getString("expType");
                            String amount=c.getString("amount");
                            String month=c.getString("month");
                            String year=c.getString("year");
                            String date_time=c.getString("date_time");
                            String account_name=c.getString("accountname");
                            //String onServer=c.getString("onServer");
                            Log.e(TAG, id+", "+expType+", "+amount+", "+month
                                    +", "+year+", "+date_time+", "+account_name);
                            final String sa2 =String.valueOf(id);
                            Cursor c2=resolver.query(CONTENT_URI, null, " _id like ?", new String[]{sa2}, null);
                            if(c2.getCount()<=0)
                            {
                                ContentValues cv=new ContentValues();
                                cv.put("_id",id);
                                cv.put("expType",expType);
                                cv.put("amount",amount);
                                cv.put("month",month);
                                cv.put("year",year);
                                cv.put("date_time",date_time);
                                cv.put("onServer","Y");
                                cv.put("accountname",account_name);
                                resolver.insert(CONTENT_URI,cv);
                                Log.e(TAG, "Above record with id:"+ id+" inserted on app local database");
                            }
                            c2.close();
                        }
 
                       /*lst.setAdapter(new HardwareListingHWObjectAdapter(
                                getApplicationContext(),username,HomeActivity.this, hwList));*/
 
                    }
                }
                getContext().getContentResolver().notifyChange(CONTENT_URI, null, false);
            } catch (JSONException e) {
                Log.e(TAG, e.getMessage());
            }
        }
        else
        {
            Log.e(TAG, "data from URL is null");
        }
    }
    public String getPostDataString(JSONObject params) throws Exception {
 
        StringBuilder result = new StringBuilder();
        boolean first = true;
 
        Iterator<String> itr = params.keys();
 
        while(itr.hasNext()){
 
            String key= itr.next();
            Object value = params.get(key);
            Log.e(TAG,"key: "+key+ " has val:"+value);
            if (first)
                first = false;
            else
                result.append("&");
 
            result.append(URLEncoder.encode(key, "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(value.toString(), "UTF-8"));
 
        }
        return result.toString();
        /*<?php
            $email = $_POST['email'];
            $name = $_POST['name'];
            print_r(json_encode($_POST));
 
            ?>*/
    }
}
share on whatapp
175 Views

Comments

 
 
Private Policy   Terms of Service   4922