Friday 18 November 2016

Retrofit File Upload:

Config class:

public class RetroConfig {

    public static Retrofit retrofit(){

        OkHttpClient client = new OkHttpClient();
        client.retryOnConnectionFailure();
        client.cache();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://bestvote.in/privilege/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        return retrofit;
    }
}

Create Api Interface:

import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

import org.json.JSONObject;

import okhttp3.ResponseBody;
import retrofit.Call;
import retrofit.http.Field;
import retrofit.http.FormUrlEncoded;
import retrofit.http.GET;
import retrofit.http.Multipart;
import retrofit.http.POST;
import retrofit.http.Part;
import retrofit.http.Path;
import retrofit.http.Query;
public interface ApiInterface {

    @Multipart
    @POST("insertpost.php")
    Call<CommonResponse> submitForm(@Part("description") RequestBody desc, @Part("audio\"; filename=\".mp3\" ") RequestBody audio,
                              @Part("image\"; filename=\".jpg\" ") RequestBody photo,
                              @Part("late") RequestBody lat, @Part("long") RequestBody lon);

    @GET("allpost.php")
    Call<SellerResponse> getSellerAds();
}

Call Api Post method:

import retrofit.Call;
import retrofit.Callback;
import retrofit.Retrofit;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

private void submitForm() {
        String desc = details.getText().toString();

        if (!desc.equals("") && imagePath!=null && audioPath!=null) {
            RequestBody descBody = RequestBody.create(MediaType.parse("text/plain"), desc);
            RequestBody latBody = RequestBody.create(MediaType.parse("text/plain"), latFinal);
            RequestBody lonBody = RequestBody.create(MediaType.parse("text/plain"), lngFinal);
            RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(imagePath));
            RequestBody audioBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(audioPath));
            //RequestBody videoBody = RequestBody.create(MediaType.parse("multipart/form-data"), new File(videoPath));

            final ProgressDialog dialog = new ProgressDialog(SellerActivity.this);
            dialog.setMessage("Uploading...");
            dialog.setCancelable(false);
            dialog.show();

            Call<CommonResponse> call = RetroConfig.client().submitForm(descBody, audioBody, imageBody, latBody, lonBody);
            call.enqueue(new Callback<CommonResponse>() {
                @Override
                public void onResponse(retrofit.Response<CommonResponse> response, Retrofit retrofit) {
                    dialog.cancel();
                    if (response.body() != null) {
                        CommonResponse response1 = response.body();
                        if(response1.getResponse().equals("success")){
                            Toast.makeText(SellerActivity.this, "Upload Ads successfully..", Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(SellerActivity.this, SellerAds.class));
                            finish();
                        }
                    }
                }

                @Override
                public void onFailure(Throwable t) {
                    Log.e("submitError", t.getLocalizedMessage());
                    dialog.cancel();
                }
            });
        } else {
            Utils.showDialog(SellerActivity.this, "Please select All files");
        }
    }   

CallGet Method:

RetroConfig.client().getSellerAds().enqueue(new Callback<SellerResponse>() {
            @Override
            public void onResponse(Response<SellerResponse> response, Retrofit retrofit) {
                SellerResponse sr = response.body();
                String status = sr.getResponse();
                if(status.equals("success")){
                    List<SAds> sAdses = sr.getSellerAds();
                    rv.setAdapter(new SellerAdsAdapter(SellerAds.this, sAdses));
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Log.e("error", t.getLocalizedMessage());
            }
        });

Thursday 10 November 2016


Dynamic ViewPager:-

in Activity :


public class MainActivity extends AppCompatActivity {

    ViewPager mPager;

    int numPages = 0;

    String[] mImageArray;

    int addNext = 0;
    EndLessAdapter adapter;

    ArrayList<String> arrayList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        arrayList = new ArrayList<>();

        String number = getIntent().getStringExtra("number");
        numPages = Integer.parseInt(number);

        mImageArray = new String[numPages];

        addNext = numPages;

        for (int i = 0; i < numPages; i++) {
            mImageArray[i] = "Click " + String.valueOf(i + 1);
            arrayList.add("Click " + String.valueOf(i + 1));
        }

        mPager = (ViewPager) findViewById(R.id.frame);
        mPager.setOffscreenPageLimit(0);
        adapter = new EndLessAdapter(this, arrayList);
        mPager.setAdapter(adapter);
    }

    public void addNewpage() {
        arrayList.add("Click " + String.valueOf(addNext + 1));
        adapter.notifyDataSetChanged();
        addNext = addNext + 1;
    }

    public class EndLessAdapter extends PagerAdapter {

        FragmentActivity activity;
        ArrayList<String> stringArrayList1;
        // String imageArray[];
        private int pos = 0;

        public EndLessAdapter(FragmentActivity act, ArrayList<String> stringArrayList) {
            stringArrayList1 = stringArrayList;
            activity = act;
        }

        public int getCount() {
            return Integer.MAX_VALUE;
            //return imageArray.length;
        }

        public Object instantiateItem(View collection, int position) {

            Button mwebView = new Button(activity);
            ((ViewPager) collection).addView(mwebView, 0);
            // mwebView.setScaleType(ImageView.ScaleType.FIT_XY);
            mwebView.setText(stringArrayList1.get(pos));

            mwebView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    addNewpage();
                }
            });

            if (pos >= stringArrayList1.size() - 1)
                pos = 0;
            else
                ++pos;

            return mwebView;
        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
            ((ViewPager) arg0).removeView((View) arg2);
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == ((View) arg1);
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

    }
}

in XML file:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.com.dynamicviewpager_android.MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true" >
    </android.support.v4.view.ViewPager>
</RelativeLayout>

BackStack in Fragments:-

Create Interface class:

public interface OnBackListner {
    void back();
}

In Activity:

public class HomeActivity extends AppCompatActivity{

    OnBackListner onBackListner;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigationdrawer);
    }

    @Override
    public void onBackPressed() {
            if (onBackListner != null) {
                onBackListner.back();
            } else {
                finish();
            }       
    }

    public void setOnBackPressedListener(OnBackListner onBackPressedListener) {
        this.onBackListner = onBackPressedListener;
    }

}

In 1st Fragment :

((HomeActivity) getActivity()).setOnBackPressedListener(new OnBackListner() {
            @Override
            public void back() {
                //startActivity(new Intent(getActivity(), MainActivity.class));
                CommonUtils.hideKeyboard(getActivity());
                getActivity().finish();
            }

        });

2nd Fragment:

((HomeActivity) getActivity()).setOnBackPressedListener(new OnBackListner() {
            @Override
            public void back() {
                //startActivity(new Intent(getActivity(), MainActivity.class));
                CommonUtils.hideKeyboard(getActivity());
                getActivity().getSupportFragmentManager().popBackStackImmediate();
            }

        });

Fragment Transaction:-

Simple Fragment Transaction:

Fragment 1:

Fragment fragment = new EditProfileFragment();

Bundle bundle = new Bundle();
bundle.putString("myrideRideId", "1035");

fragment.setArguments(bundle);

getActivity().getSupportFragmentManager()
                        .beginTransaction()
                        .setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, 
                         R.anim.enter_from_left,  R.anim.exit_to_right)
                        .replace(R.id.frame_container, fragment)
                        .addToBackStack(null)
                        .commit();

Fragment 2:

getActivity().getSupportFragmentManager().popBackStackImmediate();

Simple Fragment Add:

getSupportFragmentManager()
                    .beginTransaction()
                    .add(R.id.frame_container, fragment)
                    .commit();


Tuesday 25 October 2016


Broadcast in GCM:

onMessageReceived method:

Intent intent = new Intent(MessageReceiver.name);
sendBroadcast(intent);

Create class Reciever:

public class MessageReceiver extends BroadcastReceiver{
    public static String name = "com.app.privilege.receiver.MESSAGE";
    @Override    public void onReceive(Context context, Intent intent) {

    }
}

In MainActivity:

Above Oncreate
MessageReceiver receiver = new MessageReceiver() {
    @Override    public void onReceive(Context context, Intent intent) {
        displayData();
    }
};

In Oncreate:

registerReceiver(receiver, new IntentFilter("com.app.privilege.receiver.MESSAGE"));

public void displayData() {
    adapter.notifyDataSetChanged();
    recyclerView.invalidate();
}


On Destroy:
@Overrideprotected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}

In Manifest:

<receiver    android:name=".receiver.MessageReceiver"    android:enabled="true">
    <intent-filter>
        <action android:name="com.app.privilege.receiver.MESSAGE" />
    </intent-filter>
</receiver>






SuffleList Example

MainActivity:


public class MainActivity extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private GridLayoutManager mLayoutManager;


    private ArrayList<String> text1 = new ArrayList<String>();
    private ArrayList<String> text2 = new ArrayList<String>();

    private ArrayList<Integer> spos = new ArrayList<Integer>();
    private ArrayList<Integer> sposnew = new ArrayList<Integer>();
    private ArrayList<Integer> sposnewselected = new ArrayList<Integer>();
    private Button b1, b2;
    TextView txt1;
    int sposp;
    int pos;


    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String count = getIntent().getStringExtra("count");
        if (!TextUtils.isEmpty(count)) {
            for (int i = 0; i < Integer.parseInt(count); i++) {
                text1.add("A " + String.valueOf(i));
                text2.add("a " + String.valueOf(i));
                spos.add(i);
            }
        } else {
            for (int i = 0; i < 20; i++) {
                text1.add("A " + String.valueOf(i));
                text2.add("a " + String.valueOf(i));
                spos.add(i);
            }
        }

        b1 = (Button) findViewById(R.id.button1);
        b2 = (Button) findViewById(R.id.button2);
        txt1 = (TextView) findViewById(R.id.text1);
        mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new GridLayoutManager(this, 3);
        mRecyclerView.setLayoutManager(mLayoutManager);
        mAdapter = new MyRecyclerViewAdapter(getDataSet(), MainActivity.this);
        mRecyclerView.setAdapter(mAdapter);

        b1.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                Collections.shuffle(spos);
                Toast.makeText(MainActivity.this, String.valueOf(spos.get(0)), Toast.LENGTH_SHORT).show();
            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override            public void onClick(View view) {
                getFirstPos();
            }
        });

        suffleList();
    }

    @Override    protected void onResume() {
        super.onResume();
    }

    private ArrayList<DataObject> getDataSet() {
        ArrayList results = new ArrayList<DataObject>();
        for (int index = 0; index < text1.size(); index++) {
            DataObject obj = new DataObject(text1.get(index).toString(), text2.get(index).toString(), spos.get(index));
            results.add(index, obj);
        }
        return results;
    }


    public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.DataObjectHolder> {
        private String LOG_TAG = "MyRecyclerViewAdapter";
        private ArrayList<DataObject> mDataset;
        Context context;

        public class DataObjectHolder extends RecyclerView.ViewHolder {
            TextView label;
            TextView dateTime;
            LinearLayout layout_my;

            public DataObjectHolder(View itemView) {
                super(itemView);
                label = (TextView) itemView.findViewById(R.id.textView);
                dateTime = (TextView) itemView.findViewById(R.id.textView2);
                layout_my = (LinearLayout) itemView.findViewById(R.id.layout_my);
            }
        }

        public MyRecyclerViewAdapter(ArrayList<DataObject> myDataset, Context context) {
            mDataset = myDataset;
            this.context = context;
        }

        @Override        public DataObjectHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycleriew_item, parent, false);
            DataObjectHolder dataObjectHolder = new DataObjectHolder(view);
            return dataObjectHolder;
        }

        @Override        public void onBindViewHolder(final DataObjectHolder holder, final int position) {
            final DataObject dataObject = mDataset.get(position);
            holder.label.setText(mDataset.get(position).getmText1());
            holder.dateTime.setText(mDataset.get(position).getmText2());

            if (sposnewselected.size() > 0) {
                if (sposnewselected.contains(position)) {
                    holder.layout_my.setBackgroundResource(R.color.colorPrimaryDark);
                }
            }

            if (sposnew.size() > 0) {
                if (position == sposnew.get(0)) {
                    holder.layout_my.setBackgroundResource(R.color.colorAccent);
                }
            }

            holder.layout_my.setOnClickListener(new View.OnClickListener() {
                @Override                public void onClick(View view) {
                    if (sposnew.size() > 0) {

                        if (position == sposnew.get(0)) {
                            holder.layout_my.setBackgroundResource(R.color.colorAccent);
                            getFirstPos();
                            notifyDataSetChanged();
                        }
                    }
                }
            });

        }

        @Override        public int getItemCount() {
            return mDataset.size();
        }

        public int getItemViewType(int position) {
            return position;
        }

    }

    String listString = "";
    String listString1 = "";

    public void suffleList() {
        Collections.shuffle(spos);
        for (int str : spos) {
            sposnew.add(str);
            listString += String.valueOf(str) + "\t";
        }
        txt1.setText(listString);
    }

    public void getFirstPos() {
        if (sposnew.size() > 0) {
            sposnewselected.add(sposnew.get(0));
            sposnew.remove(0);
            for (int str : sposnew) {
                listString1 += String.valueOf(str) + "\t ";
            }
            Log.e("new str", listString1);
        }
    }

    @Override    public void onBackPressed() {
        finish();
    }
}


ModelClass:

public class DataObject {

private String mText1;

private String mText2;

private int spos;

public DataObject(String mText1, String mText2, int spos) {

this.mText1 = mText1;

this.mText2 = mText2;

this.spos = spos;

}

public String getmText1() {

return mText1;

}

public void setmText1(String mText1) {

this.mText1 = mText1;

}

public String getmText2() {

return mText2;

}

public void setmText2(String mText2) {

this.mText2 = mText2;

}

public int getSpos() {

return spos;

}

public void setSpos(int spos) {

this.spos = spos;

}

}

Retrofit 2.1:

Add gradle in your app.gradle file

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'

Create interface

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface Api {

    @FormUrlEncoded    @POST("driver_login")
    Call<DriverLoginResponse> driverLogin(@Field("email") String email,
                                          @Field("password") String password,
                                          @Field("deviceId") String deviceId,
                                          @Field("deviceType") String deviceType);

}

Create Time class for call api:

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class RetroConfig {

    public static Api client() {
 
        OkHttpClient.Builder b = new OkHttpClient.Builder();
        b.readTimeout(200, TimeUnit.SECONDS);
        b.writeTimeout(600, TimeUnit.SECONDS);
        OkHttpClient client = b.build();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constants.ROOT_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        Api apiInterface = retrofit.create(Api.class);
        return apiInterface;


    }



MainActivity.class:

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

final ProgressDialog dialog = new ProgressDialog(OtpActivity.this);
dialog.setMessage("please wait...");
dialog.setCancelable(false);
dialog.show();

Call<ResponseBody> responseCall = RetroConfig.client().verifyOtp(driver_id, otp);
responseCall.enqueue(new Callback<ResponseBody>() {
    @Override    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        dialog.cancel();
        if (response.body() != null) {
            try {
                String result = response.body().string();

                JSONObject jsonObj = new JSONObject(result);

                String sres = jsonObj.getString("responce");

            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }

    @Override    public void onFailure(Call<ResponseBody> call, Throwable t) {
        dialog.cancel();
        Log.e("error", t.getLocalizedMessage());
    }
});



Monday 29 August 2016

Scroll GoogleMap in ScrollView Android:


First create GoogleMap Class:

public class ScrollGoogleMap extends SupportMapFragment {
    private OnTouchListener mListener;

    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {
        View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);

        TouchableWrapper frameLayout = new TouchableWrapper(getActivity());

        frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));

        ((ViewGroup) layout).addView(frameLayout,
                new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        return layout;
    }

    public void setListener(OnTouchListener listener) {
        mListener = listener;
    }

    public interface OnTouchListener {
        public abstract void onTouch();
    }

    public class TouchableWrapper extends FrameLayout {

        public TouchableWrapper(Context context) {
            super(context);
        }

        @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    mListener.onTouch();
                    break;
                case MotionEvent.ACTION_UP:
                    mListener.onTouch();
                    break;
            }
            return super.dispatchTouchEvent(event);
        }
    }
}

then change your xml where you create google map:
<fragment
            android:id="@+id/mygoogle_map"
            android:name="com.example.ScrollGoogleMap"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

Then change your activity code where you initialize your googlemap:

GoogleMap mMap = ((ScrollGoogleMap) getSupportFragmentManager().findFragmentById(R.id.mygoogle_map)).getMap();

((ScrollGoogleMap) getSupportFragmentManager()
                         .findFragmentById(R.id.myprofile_map))
                         .setListener(new WorkaroundMapFragment.OnTouchListener() {
    @Override    public void onTouch() {
        scrollMyProfile.requestDisallowInterceptTouchEvent(true);
    }
});


Friday 8 April 2016

Back press on Toolbar Apcompact Activity Android

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        switch (item.getItemId()) {
            case android.R.id.home:
                onBackPressed();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
JSON Get and POST method using urlconnection


Get Method :

 class GetData extends AsyncTask<String, Void, String> implements DialogInterface.OnCancelListener {

        ProgressHUD mProgressHUD;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            mProgressHUD = ProgressHUD.show(PetGallery.this,"Getting Data", false,false, this);
        }

        @Override
        protected String doInBackground(String... params) {
            String msg = null; int status =0;

            StringBuilder sb = new StringBuilder();
            try {
                URL get_url = new URL(Constant.GET_URL);
                HttpURLConnection conn = (HttpURLConnection) get_url.openConnection();
                conn.setRequestMethod("GET");
                conn.setDoInput(true);

                status = conn.getResponseCode();
                msg = conn.getResponseMessage();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(conn.getInputStream()));

                String line = null;
                // Read Server Response
                while ((line = reader.readLine()) != null) {
                    sb.append(line);
                    break;
                }
                reader.close();
                return sb.toString();

            } catch (Exception e) {
                Log.e("Http Response: ", msg);
            }

            return msg;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if(s!=null) {
                String status;
                try {
                    JSONObject jsonObject = new JSONObject(s);
                    status = jsonObject.getString(Constant.STATUS);
                    if (status.equals("success")) {
                        JSONArray jsonArray = jsonObject.getJSONArray(Constant.GET_ARRAY);
                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject object = jsonArray.getJSONObject(i);
                            String id = object.getString(Constant.PETID);
                            String url = object.getString(Constant.PHOTO_STRING);
                            String details = object.getString(Constant.DESC);
                            String place = object.getString(Constant.PLACE);
                            String date = object.getString(Constant.DATE);
                            String name = object.getString(Constant.NAME);
                            String contact = object.getString(Constant.CONTACT);

                            HashMap<String, String> map = new HashMap<String, String>();
                            map.put(Constant.PETID, id);
                            map.put(Constant.PHOTO_STRING, url);
                            map.put(Constant.DESC, details);
                            map.put(Constant.PLACE, place);
                            map.put(Constant.DATE, date);
                            map.put(Constant.NAME, name);
                            map.put(Constant.CONTACT, contact);

                            //LoadImage.execute(map);
                            list.add(map);
                        }
                        lv.setAdapter(new CustomAdapter(PetGallery.this, list));
                        mProgressHUD.dismiss();
                    } else {
                        mProgressHUD.dismiss();
                        Toast.makeText(getApplicationContext(), "Data not found", Toast.LENGTH_SHORT).show();
                    }

                } catch (Exception e) {
                    Log.e("Json Error", e.getMessage());
                }
            }

        }

        @Override
        public void onCancel(DialogInterface dialog) {
            this.cancel(true);
            mProgressHUD.dismiss();
        }
    }


Post Method:

 class GetTask extends AsyncTask<String, Void, String> implements DialogInterface.OnCancelListener{

        ProgressHUD mProgressHUD;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            mProgressHUD = ProgressHUD.show(Pet.this,"Loading", false,false, this);
        }

        @Override
        protected String doInBackground(String... params) {

            URL url;
            String response = "";
            try {

                SharedPreferences preferences = getSharedPreferences("Pet", 0);
                String id = preferences.getString("id", null);
                String data = URLEncoder.encode("pet_id", "UTF-8") + "=" + URLEncoder.encode(id, "UTF-8");

                url = new URL("http://www.imstrong.info/ws/get_pet.php");
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setReadTimeout(15000);
                conn.setConnectTimeout(15000);
                conn.setRequestMethod("POST");
                conn.setDoInput(true);
                conn.setDoOutput(true);


                OutputStream os = conn.getOutputStream();
                BufferedWriter writer = new BufferedWriter(
                        new OutputStreamWriter(os, "UTF-8"));
                writer.write(data);

                writer.flush();
                writer.close();
                os.close();

                conn.connect();
                int responseCode=conn.getResponseCode();

                if (responseCode == HttpsURLConnection.HTTP_OK) {
                    String line;
                    BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                    while ((line=br.readLine()) != null) {
                        response+=line;
                    }
                }
                else {
                    response=String.valueOf(responseCode);

                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            return response;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
            mProgressHUD.dismiss();
            if(s!=null) {
                try {
                    JSONObject object = new JSONObject(s);
                    simageurl = object.getString(Constant.PHOTO_STRING);
                    sdetails = object.getString(Constant.DESC);
                    splace = object.getString(Constant.PLACE);
                    sdate = object.getString(Constant.DATE);
                    sname = object.getString(Constant.NAME);
                    scontact = object.getString(Constant.CONTACT);

                    details.setText(sdetails);
                    place.setText(splace);
                    date.setText("(" + sdate + ")");
                    name.setText(sname);
                    contact.setText(scontact);

                    if(simageurl!=null){
                        Bitmap bitmap = getBitmapFromURL(simageurl);
                        photo.setImageBitmap(bitmap);
                    }else{
                        photo.setImageResource(R.drawable.logo);
                    }


                }catch(Exception e){
                    Log.e("Json Responce : ", e.getMessage());
                }
            }
        }

        @Override
        public void onCancel(DialogInterface dialog) {
            this.cancel(true);
            mProgressHUD.dismiss();
        }
    }
Login Example :

Class file :

package com.topappsdevelopers.funapps;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebView;
import android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.AccessTokenTracker;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.ProfileTracker;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

/**
 * Created by Excel on 3/7/2016.
 */
public class DemoActivity extends AppCompatActivity {

    WebView web;

    private CallbackManager callbackManager;
    private TextView textView;

    private AccessTokenTracker accessTokenTracker;
    private ProfileTracker profileTracker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.activity_demo);


        callbackManager = CallbackManager.Factory.create();

        accessTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {

            }
        };

        profileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
                displayMessage(newProfile);
            }
        };

        accessTokenTracker.startTracking();
        profileTracker.startTracking();

        LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
        textView = (TextView) findViewById(R.id.textView);

        loginButton.setReadPermissions("user_friends");
        loginButton.registerCallback(callbackManager, callback);


    }


    private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            AccessToken accessToken = loginResult.getAccessToken();
            Profile profile = Profile.getCurrentProfile();
            displayMessage(profile);
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException e) {

        }
    };

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);

    }

    private void displayMessage(Profile profile) {
        if (profile != null) {
            textView.setText(profile.getName() + " " + profile.getId());
            String name = profile.getName();
            String id = profile.getId();
        }
    }

    @Override
    public void onStop() {
        super.onStop();
        accessTokenTracker.stopTracking();
        profileTracker.stopTracking();
    }

    @Override
    public void onResume() {
        super.onResume();
        Profile profile = Profile.getCurrentProfile();
        displayMessage(profile);
    }
}

XMl File :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="New Text" />

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>


Manifest File  :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.topappsdevelopers.funapps">

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission
        android:name="info.androidhive.parsenotifications.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.topappsdevelopers.funapps.permission.C2D_MESSAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".SplashScreenActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait">

        </activity>
        <activity
            android:name=".CategoryActivity"
            android:screenOrientation="portrait">

        </activity>

        <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <provider android:authorities="com.facebook.app.FacebookContentProvider1701830333389656"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id" />
        <meta-data
            android:name="com.facebook.sdk.ApplicationName"
            android:value="@string/app_name" />

        <activity
            android:name="com.startapp.android.publish.list3d.List3DActivity"
            android:theme="@android:style/Theme" />
        <activity
            android:name="com.startapp.android.publish.OverlayActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent" />
        <activity
            android:name="com.startapp.android.publish.FullScreenActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme" />

        <service android:name="com.parse.PushService" />

        <receiver
            android:name=".notification.CustomPushReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
                <action android:name="com.parse.push.intent.RECEIVE" />
                <action android:name="com.parse.push.intent.DELETE" />
                <action android:name="com.parse.push.intent.OPEN" />
            </intent-filter>
        </receiver>
        <receiver
            android:name="com.parse.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <!-- IMPORTANT: Change "info.androidhive.parsenotifications" to match your app's package name. -->
                <category android:name="com.topappsdevelopers.funapps" />
            </intent-filter>
        </receiver>
    </application>

</manifest>