diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 876e6316e8bed496896946899e6818b3c3dc896e..aeb7799212d674ea17ebd1291335de6224b2ec45 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -6,6 +6,8 @@
 
     <uses-feature android:name="android.hardware.camera2" />
 
+
+
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
@@ -19,7 +21,7 @@
         android:theme="@style/AppTheme">
         <provider
             android:name="android.support.v4.content.FileProvider"
-            android:authorities="com.example.android.fileprovider"
+            android:authorities="com.mapps.seproject.provider"
             android:exported="false"
             android:grantUriPermissions="true">
             <meta-data
@@ -27,6 +29,8 @@
                 android:resource="@xml/file_paths" />
         </provider>
 
+
+
         <activity android:name=".LoginActivity">
 
         </activity>
diff --git a/app/src/main/java/com/mapps/seproject/CameraFragment.java b/app/src/main/java/com/mapps/seproject/CameraFragment.java
index be458dfa76ec82fa0c54e2709344b785bbb76676..7e706567d40067f78852cda7fd10cf63fafa51fc 100644
--- a/app/src/main/java/com/mapps/seproject/CameraFragment.java
+++ b/app/src/main/java/com/mapps/seproject/CameraFragment.java
@@ -1,23 +1,43 @@
 package com.mapps.seproject;
 
 import android.app.Fragment;
+import android.app.ProgressDialog;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.media.Image;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.provider.MediaStore;
+import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
+import android.support.v4.content.FileProvider;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
 import android.widget.ImageView;
+import android.widget.Toast;
+
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.OnSuccessListener;
+import com.google.firebase.storage.FirebaseStorage;
+import com.google.firebase.storage.OnProgressListener;
+import com.google.firebase.storage.StorageReference;
+import com.google.firebase.storage.UploadTask;
 
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Locale;
 
+import static android.app.Activity.RESULT_CANCELED;
 import static android.app.Activity.RESULT_OK;
 
 /**
@@ -26,9 +46,20 @@ import static android.app.Activity.RESULT_OK;
 
 public class CameraFragment extends Fragment {
 
-    private Uri file;
-    static final int REQUEST_IMAGE_CAPTURE = 1;
+
+    private static final String IMAGE_DIRECTORY_NAME = "Hello_Camera";
     View view;
+    private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
+    public static final int MEDIA_TYPE_IMAGE = 1;
+    private static int RESULT_LOAD_IMAGE = 2;
+    private Uri fileUri;
+    private Uri imageUri;
+    public static Uri images;
+    private Button btnCapturePicture;
+    private Button choose_image;
+    StorageReference mStorageRef;
+
+
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -36,6 +67,25 @@ public class CameraFragment extends Fragment {
         // Inflate the layout for this fragment
         view = inflater.inflate(R.layout.fragment_camera, container, false);
 
+        mStorageRef = FirebaseStorage.getInstance().getReference();
+        btnCapturePicture = (Button) view.findViewById(R.id.btnCapturePicture);
+        choose_image = (Button) view.findViewById(R.id.choose_image);
+        btnCapturePicture.setOnClickListener(new View.OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                // capture picture
+                captureImage();
+            }
+        });
+        choose_image.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
+                startActivityForResult(cameraIntent,RESULT_LOAD_IMAGE);
+            }
+        });
+
 
         return view;
     }
@@ -47,67 +97,219 @@ public class CameraFragment extends Fragment {
         getActivity().setTitle("Menu1");
     }
 
-    private void dispatchTakePictureIntent() {
+    private boolean isDeviceSupportCamera() {
+        if (getActivity().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_CAMERA)) {
+            // this device has a camera
+            return true;
+        } else {
+            // no camera on this device
+            return false;
+        }
+    }
 
-        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
-        try {
-            file = Uri.fromFile(createImageFile());
-        }catch (Exception e){
+    private void captureImage() {
+        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 
-        }
-        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,file);
+       // fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
+        fileUri = FileProvider.getUriForFile(getActivity(), "com.mapps.seproject.provider", getOutputMediaFile(MEDIA_TYPE_IMAGE));
 
-        if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
-            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
-        }
+        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
+
+        // start the image capture Intent
+        startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
     }
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        // if the result is capturing Image
+        if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
+            if (resultCode == RESULT_OK) {
+                uploadFile();
+            } else if (resultCode == RESULT_CANCELED) {
+                // user cancelled Image capture
+                Toast.makeText(getActivity(),
+                        "User cancelled image capture", Toast.LENGTH_SHORT)
+                        .show();
+            } else {
+                // failed to capture image
+                Toast.makeText(getActivity(),
+                        "Sorry! Failed to capture image", Toast.LENGTH_SHORT)
+                        .show();
+            }
+        }
+        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
+
+            imageUri = data.getData();
+            Toast.makeText(getActivity().getBaseContext(), "Image Added. Press Compose to transfer to Mail Window", Toast.LENGTH_SHORT).show();
+            uploadFiles();
+        }
+
+    }
+
+
 
-        ImageView mImageView = (ImageView) view.findViewById(R.id.imageView);
-        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
-            Bundle extras = data.getExtras();
-            Bitmap imageBitmap = (Bitmap) extras.get("data");
-            if(imageBitmap==null){
 
-                // No image was taken
 
 
-            }else {
+    private static File getOutputMediaFile(int type) {
 
 
-                mImageView.setImageBitmap(imageBitmap);
 
+        // External sdcard location
+        File mediaStorageDir = new File(
+                Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
+                IMAGE_DIRECTORY_NAME);
+
+        // Create the storage directory if it does not exist
+        if (!mediaStorageDir.exists()) {
+            if (!mediaStorageDir.mkdirs()) {
+                Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
+                        + IMAGE_DIRECTORY_NAME + " directory");
+                return null;
             }
         }
+
+        // Create a media file name
+        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
+                Locale.getDefault()).format(new Date());
+        File mediaFile;
+        if (type == MEDIA_TYPE_IMAGE) {
+            mediaFile = new File(mediaStorageDir.getPath() + File.separator
+                    + "IMG_" + timeStamp + ".jpg");
+        } else {
+            return null;
+        }
+
+        return mediaFile;
     }
 
-    String mCurrentPhotoPath;
-
-    private File createImageFile() throws IOException {
-        // Create an image file name
-        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
-        String imageFileName = "JPEG_" + timeStamp + "_";
-        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
-        File image = File.createTempFile(
-                imageFileName,  /* prefix */
-                ".jpg",         /* suffix */
-                storageDir      /* directory */
-        );
-
-        // Save a file: path for use with ACTION_VIEW intents
-        mCurrentPhotoPath = image.getAbsolutePath();
-        return image;
+
+
+    private void uploadFile() {
+        //if there is a file to upload
+        if (fileUri != null) {
+            //displaying a progress dialog while upload is going on
+            final ProgressDialog progressDialog = new ProgressDialog(getActivity());
+            progressDialog.setTitle("Uploading");
+            progressDialog.show();
+
+            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
+                    Locale.getDefault()).format(new Date());
+
+            StorageReference riversRef = mStorageRef.child("images/"+ timeStamp+"pic.jpg");
+            riversRef.putFile(fileUri)
+                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
+                        @Override
+                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
+                            //if the upload is successfull
+                            //hiding the progress dialog
+                            progressDialog.dismiss();
+
+                            //and displaying a success toast
+                            Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
+                        }
+                    })
+                    .addOnFailureListener(new OnFailureListener() {
+                        @Override
+                        public void onFailure(@NonNull Exception exception) {
+                            //if the upload is not successfull
+                            //hiding the progress dialog
+                            progressDialog.dismiss();
+
+                            //and displaying error message
+                            Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
+                        }
+                    })
+                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
+                        @SuppressWarnings("VisibleForTests")
+                        @Override
+                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
+                            //calculating progress percentage
+
+                            double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
+
+                            //displaying percentage in progress dialog
+                            progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
+                        }
+                    });
+        }
+        //if there is not any file
+        else {
+            //you can display an error toast
+        }
     }
 
+    private void uploadFiles() {
+        //if there is a file to upload
+        if (imageUri != null) {
+            //displaying a progress dialog while upload is going on
+            final ProgressDialog progressDialog = new ProgressDialog(getActivity());
+            progressDialog.setTitle("Uploading");
+            progressDialog.show();
+
+            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss",
+                    Locale.getDefault()).format(new Date());
 
+            StorageReference riversRef = mStorageRef.child("images/"+ timeStamp+"pic.jpg");
+            riversRef.putFile(imageUri)
+                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
+                        @Override
+                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
+                            //if the upload is successfull
+                            //hiding the progress dialog
+                            progressDialog.dismiss();
+
+                            //and displaying a success toast
+                            Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
+                        }
+                    })
+                    .addOnFailureListener(new OnFailureListener() {
+                        @Override
+                        public void onFailure(@NonNull Exception exception) {
+                            //if the upload is not successfull
+                            //hiding the progress dialog
+                            progressDialog.dismiss();
+
+                            //and displaying error message
+                            Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
+                        }
+                    })
+                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
+                        @SuppressWarnings("VisibleForTests")
+                        @Override
+                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
+                            //calculating progress percentage
+
+                            double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
+
+                            //displaying percentage in progress dialog
+                            progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
+                        }
+                    });
+        }
+        //if there is not any file
+        else {
+            //you can display an error toast
+        }
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        // save file url in bundle as it will be null on scren orientation
+        // changes
+        outState.putParcelable("file_uri", fileUri);
+    }
 
 
+    /*
     @Override
     public void onStart(){
         super.onStart();
         dispatchTakePictureIntent();
 
     }
+    */
 }
diff --git a/app/src/main/java/com/mapps/seproject/ComposeFragment.java b/app/src/main/java/com/mapps/seproject/ComposeFragment.java
index 39fe20ce945fd5e0d3a3598fc83db0fadb38f977..54853dc933401a0d243d5870e98b966dbc0095a7 100644
--- a/app/src/main/java/com/mapps/seproject/ComposeFragment.java
+++ b/app/src/main/java/com/mapps/seproject/ComposeFragment.java
@@ -1,15 +1,21 @@
 package com.mapps.seproject;
 
+import android.*;
+import android.Manifest;
 import android.app.AlertDialog;
 import android.app.Fragment;
 import android.app.ProgressDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.support.annotation.NonNull;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -29,6 +35,9 @@ import com.google.firebase.storage.StorageReference;
 import com.google.firebase.storage.UploadTask;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
 
 import static android.app.Activity.RESULT_OK;
 
@@ -43,15 +52,15 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
     Spinner dropdown;
     TextView emailText;
 
-    private StorageReference mStorageRef;
 
 
-    Button bAddImage;
+    private Uri imageUri = CameraFragment.images;
+
+
+    //Button bAddImage;
     View view;
-    private Uri imageUri;
     Button upload;
-    private static int RESULT_LOAD_IMAGE = 1;
-    private static int RESULT_MAIL = 2;
+    //private static int RESULT_LOAD_IMAGE = 1;
 
     private Button b_get;
     private com.mapps.seproject.TrackGPS gps;
@@ -73,16 +82,12 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
 
         bComposeMail = (Button) view.findViewById(R.id.bComposeMail);
         emailText = (TextView) view.findViewById(R.id.tvEmailMessage);
-        bAddImage = (Button) view.findViewById(R.id.bAddImage);
         b_get = (Button) view.findViewById(R.id.button2);
-        upload = (Button) view.findViewById(R.id.upload_image);
 
-        mStorageRef = FirebaseStorage.getInstance().getReference();
 
-        bAddImage.setOnClickListener(this);
+
         bComposeMail.setOnClickListener(this);
         b_get.setOnClickListener(this);
-        upload.setOnClickListener(this);
         return view;
     }
 
@@ -161,17 +166,7 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
 
         }
 
-        if(v == bAddImage)  {
 
-            Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
-            startActivityForResult(cameraIntent,RESULT_LOAD_IMAGE);
-
-        }
-
-        //Upload Image
-        if(v == upload){
-            uploadFile();
-        }
 
         //Location
 	    if(v == b_get){
@@ -204,75 +199,8 @@ public class ComposeFragment extends Fragment implements View.OnClickListener{
 
 
 
-    @Override
-    public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-
-        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
-
-            imageUri = data.getData();
-            Toast.makeText(getActivity().getBaseContext(), "Image Added. Press Compose to transfer to Mail Window", Toast.LENGTH_SHORT).show();
-
-        }
-
-
-
-
-    }
 
 
-    //Upload image
-    private void uploadFile() {
-        //if there is a file to upload
-        if (imageUri != null) {
-            //displaying a progress dialog while upload is going on
-            final ProgressDialog progressDialog = new ProgressDialog(getActivity());
-            progressDialog.setTitle("Uploading");
-            progressDialog.show();
-
-            StorageReference riversRef = mStorageRef.child("images/pic.jpg");
-            riversRef.putFile(imageUri)
-                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
-                        @Override
-                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
-                            //if the upload is successfull
-                            //hiding the progress dialog
-                            progressDialog.dismiss();
-
-                            //and displaying a success toast
-                            Toast.makeText(getActivity().getBaseContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
-                        }
-                    })
-                    .addOnFailureListener(new OnFailureListener() {
-                        @Override
-                        public void onFailure(@NonNull Exception exception) {
-                            //if the upload is not successfull
-                            //hiding the progress dialog
-                            progressDialog.dismiss();
-
-                            //and displaying error message
-                            Toast.makeText(getActivity().getBaseContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
-                        }
-                    })
-                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
-                        @SuppressWarnings("VisibleForTests")
-                        @Override
-                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
-                            //calculating progress percentage
-
-                            double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
-
-                            //displaying percentage in progress dialog
-                            progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
-                        }
-                    });
-        }
-        //if there is not any file
-        else {
-            //you can display an error toast
-        }
-    }
-
     @Override
     public void onActivityCreated(Bundle savedInstanceState)
     {
diff --git a/app/src/main/java/com/mapps/seproject/RegisterActivity.java b/app/src/main/java/com/mapps/seproject/RegisterActivity.java
index 9056dcf18acaf245ba26b7a3d80337f97c17731c..89f7f8417515826d691527a808281d77bb5f1aed 100644
--- a/app/src/main/java/com/mapps/seproject/RegisterActivity.java
+++ b/app/src/main/java/com/mapps/seproject/RegisterActivity.java
@@ -58,13 +58,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL
 
         b.setOnClickListener(this);
         loginText.setOnClickListener(this);
-
-
-
-
-
-
-
     }
 
 
@@ -88,9 +81,6 @@ public class RegisterActivity extends AppCompatActivity implements View.OnClickL
             return;
 
         }
-
-
-
         progress.setMessage("Registering");                                                      // Progress Bar
         progress.show();
 
diff --git a/app/src/main/java/com/mapps/seproject/StartActivty.java b/app/src/main/java/com/mapps/seproject/StartActivty.java
index 23a8f94adf4077f0e264751e9c16895953428258..eb24cb324b905061418ac4730c80470114cd3012 100644
--- a/app/src/main/java/com/mapps/seproject/StartActivty.java
+++ b/app/src/main/java/com/mapps/seproject/StartActivty.java
@@ -1,6 +1,15 @@
 package com.mapps.seproject;
 
+import android.*;
+import android.Manifest;
+import android.annotation.TargetApi;
 import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.support.annotation.NonNull;
+import android.support.design.widget.Snackbar;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
@@ -10,18 +19,111 @@ public class StartActivty extends AppCompatActivity implements View.OnClickListe
 
     Button user;
     Button municipal;
+    public  static final int PERMISSIONS_MULTIPLE_REQUEST = 123;
 
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_start_activty);
+        checkAndroidVersion();
         user = (Button) findViewById(R.id.user_entry);
         municipal = (Button) findViewById(R.id.municipal_entry);
         user.setOnClickListener(this);
         municipal.setOnClickListener(this);
     }
 
+    private void checkAndroidVersion() {
+        if (Build.VERSION.SDK_INT >= 23) {
+
+            checkPermission();
+        } else {
+            // write your logic here
+        }
+
+    }
+
+    @TargetApi(Build.VERSION_CODES.M)
+    private void checkPermission() {
+        if (ContextCompat.checkSelfPermission(this,
+                android.Manifest.permission.READ_EXTERNAL_STORAGE) + ContextCompat
+                .checkSelfPermission(this, android.Manifest.permission.CAMERA)   + ContextCompat
+                .checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)  + ContextCompat
+                .checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
+                != PackageManager.PERMISSION_GRANTED) {
+
+            if (ActivityCompat.shouldShowRequestPermissionRationale
+                    (this, android.Manifest.permission.READ_EXTERNAL_STORAGE) ||
+                    ActivityCompat.shouldShowRequestPermissionRationale
+                            (this, android.Manifest.permission.CAMERA) ||
+                    ActivityCompat.shouldShowRequestPermissionRationale
+                            (this, Manifest.permission.ACCESS_COARSE_LOCATION) ||
+                    ActivityCompat.shouldShowRequestPermissionRationale
+                            (this, Manifest.permission.ACCESS_FINE_LOCATION)) {
+
+                Snackbar.make(findViewById(android.R.id.content),
+                        "Please Grant Permissions ",
+                        Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
+                        new View.OnClickListener() {
+                            @Override
+                            public void onClick(View v) {
+                                requestPermissions(
+                                        new String[]{android.Manifest.permission
+                                                .READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
+                                                .ACCESS_FINE_LOCATION, Manifest.permission
+                                                .ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
+                            }
+                        }).show();
+            } else {
+                requestPermissions(
+                        new String[]{android.Manifest.permission
+                                .READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
+                                .ACCESS_FINE_LOCATION, Manifest.permission
+                                .ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
+            }
+        } else {
+            // write your logic code if permission already granted
+        }
+    }
+
+    @Override
+    @TargetApi(Build.VERSION_CODES.M)
+    public void onRequestPermissionsResult(int requestCode,
+                                           @NonNull String[] permissions, @NonNull int[] grantResults) {
+
+        switch (requestCode) {
+            case PERMISSIONS_MULTIPLE_REQUEST:
+                if (grantResults.length > 0) {
+                    boolean cameraPermission = grantResults[1] == PackageManager.PERMISSION_GRANTED;
+                    boolean readExternalFile = grantResults[0] == PackageManager.PERMISSION_GRANTED;
+
+
+                    if(cameraPermission && readExternalFile)
+                    {
+                        // write your logic here
+                        Snackbar.make(findViewById(android.R.id.content),
+                                "Please Grant Permissions to upload profile photo",
+                                Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
+                                new View.OnClickListener() {
+                                    @Override
+                                    public void onClick(View v) {
+                                        requestPermissions(
+                                                new String[]{android.Manifest.permission
+                                                        .READ_EXTERNAL_STORAGE, android.Manifest.permission.CAMERA, Manifest.permission
+                                                        .ACCESS_FINE_LOCATION, Manifest.permission
+                                                        .ACCESS_COARSE_LOCATION},PERMISSIONS_MULTIPLE_REQUEST);
+                                    }
+                                }).show();
+                    } else {
+
+                    }
+                }
+                break;
+        }
+    }
+
+    
+
     @Override
     public void onClick(View v) {
         if(v==user){
diff --git a/app/src/main/java/com/mapps/seproject/UserActivityFragment.java b/app/src/main/java/com/mapps/seproject/UserActivityFragment.java
index e81d46424b4377fb3088d63a99a8b95f897431e3..d3500beb6124ddf329abe38da9e42cbcb1874ade 100644
--- a/app/src/main/java/com/mapps/seproject/UserActivityFragment.java
+++ b/app/src/main/java/com/mapps/seproject/UserActivityFragment.java
@@ -3,25 +3,54 @@ package com.mapps.seproject;
 import android.app.Fragment;
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
 import android.net.Uri;
 import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
+import android.widget.ListView;
 import android.widget.TextView;
 
+import com.android.volley.Cache;
+import com.android.volley.Request;
+import com.android.volley.Response;
+import com.android.volley.VolleyError;
+import com.android.volley.VolleyLog;
+import com.android.volley.toolbox.JsonObjectRequest;
 import com.google.firebase.auth.FirebaseAuth;
 import com.google.firebase.auth.FirebaseUser;
+import com.mapps.seproject.adapter.FeedListAdapter;
+import com.mapps.seproject.app.AppController;
+import com.mapps.seproject.data.FeedItem;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+
+import static android.content.ContentValues.TAG;
 
 
 public class UserActivityFragment extends Fragment  {
 
     Button bSignOut;
-    TextView welcome;
+
+    FirebaseUser user;
     FirebaseAuth firebaseAuth;
-    Button bComposeScreen;
+
+    private ListView listView;
+    private FeedListAdapter listAdapter;
+    private List<FeedItem> feedItems;
+    private String URL_FEED = "https://se-project-4a6c6.firebaseapp.com/feeds/feeds.json";
+
     View view;
 
 
@@ -41,11 +70,11 @@ public class UserActivityFragment extends Fragment  {
 
         }
 
-        FirebaseUser user = firebaseAuth.getCurrentUser();
+        user = firebaseAuth.getCurrentUser();
+
+
 
 
-        welcome = (TextView) view.findViewById(R.id.tvWelcome);
-        welcome.setText("Welcome "+user.getEmail());                                        // Get Email'
 
         bSignOut = (Button) view.findViewById(R.id.bSignOut);
         bSignOut.setOnClickListener(new View.OnClickListener() {
@@ -59,6 +88,58 @@ public class UserActivityFragment extends Fragment  {
             }
         });
 
+        listView = (ListView) view.findViewById(R.id.lists);
+
+        feedItems = new ArrayList<FeedItem>();
+
+        listAdapter = new FeedListAdapter(getActivity(), feedItems);
+        listView.setAdapter(listAdapter);
+
+        // These two lines not needed,
+        // just to get the look of facebook (changing background color & hiding the icon)
+
+
+
+        // We first check for cached request
+        Cache cache = AppController.getInstance().getRequestQueue().getCache();
+        Cache.Entry entry = cache.get(URL_FEED);
+        if (entry != null) {
+            // fetch the data from cache
+            try {
+                String data = new String(entry.data, "UTF-8");
+                try {
+                    parseJsonFeed(new JSONObject(data));
+                } catch (JSONException e) {
+                    e.printStackTrace();
+                }
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+
+        } else {
+            // making fresh volley request and getting json
+            JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET,
+                    URL_FEED, null, new Response.Listener<JSONObject>() {
+
+                @Override
+                public void onResponse(JSONObject response) {
+                    VolleyLog.d(TAG, "Response: " + response.toString());
+                    if (response != null) {
+                        parseJsonFeed(response);
+                    }
+                }
+            }, new Response.ErrorListener() {
+
+                @Override
+                public void onErrorResponse(VolleyError error) {
+                    VolleyLog.d(TAG, "Error: " + error.getMessage());
+                }
+            });
+
+            // Adding request to volley request queue
+            AppController.getInstance().addToRequestQueue(jsonReq);
+        }
+
 
 
         return view;
@@ -67,13 +148,42 @@ public class UserActivityFragment extends Fragment  {
     @Override
     public void onViewCreated(View view,Bundle savedInstanceState){
         super.onViewCreated(view,savedInstanceState);
-        getActivity().setTitle("Menu1");
+        getActivity().setTitle("Welcome "+ user.getEmail());
 
 
     }
 
 
+    private void parseJsonFeed(JSONObject response) {
+        try {
+            JSONArray feedArray = response.getJSONArray("feed");
+
+            for (int i = 0; i < feedArray.length(); i++) {
+                JSONObject feedObj = (JSONObject) feedArray.get(i);
+
+                FeedItem item = new FeedItem();
+                item.setId(feedObj.getInt("id"));
+                item.setName(feedObj.getString("name"));
 
+                String image = feedObj.isNull("image") ? null : feedObj
+                        .getString("image");
+                item.setImge(image);
+                item.setStatus(feedObj.getString("status"));
+                item.setProfilePic(feedObj.getString("profilePic"));
+                item.setTimeStamp(feedObj.getString("timeStamp"));
+
+                String feedUrl = feedObj.isNull("url") ? null : feedObj
+                        .getString("url");
+                item.setUrl(feedUrl);
+
+                feedItems.add(item);
+            }
+
+            listAdapter.notifyDataSetChanged();
+        } catch (JSONException e) {
+            e.printStackTrace();
+        }
+    }
 
 
 }
diff --git a/app/src/main/res/layout/fragment_camera.xml b/app/src/main/res/layout/fragment_camera.xml
index 8e70568025fc5ffa69d4d2993041af9cad741f7e..a9df2dcf80ff0f3f11043cb9f27f66d13133dfb2 100644
--- a/app/src/main/res/layout/fragment_camera.xml
+++ b/app/src/main/res/layout/fragment_camera.xml
@@ -4,11 +4,23 @@
     android:orientation="vertical" android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <ImageView
-        android:id="@+id/imageView"
-        android:layout_width="match_parent"
-        android:layout_height="300dp"
+
+    <Button
+        android:id="@+id/btnCapturePicture"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
         android:layout_alignParentStart="true"
-        android:layout_marginStart="13dp"
-        app:srcCompat="@drawable/googleg_standard_color_18" />
+        android:layout_marginBottom="114dp"
+        android:layout_marginStart="53dp"
+        android:text="Take Image" />
+
+    <Button
+        android:id="@+id/choose_image"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_alignTop="@+id/btnCapturePicture"
+        android:layout_marginEnd="42dp"
+        android:text="Choose Image" />
 </RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_compose.xml b/app/src/main/res/layout/fragment_compose.xml
index c3a360955196d08c86ded02e7a53891fe58730da..5decb7b011f5a76f7855da25307f731410edf824 100644
--- a/app/src/main/res/layout/fragment_compose.xml
+++ b/app/src/main/res/layout/fragment_compose.xml
@@ -23,24 +23,16 @@
         android:layout_alignParentTop="true"
         android:layout_alignParentStart="true" />
 
+
+
     <Button
         android:text="Compose Email"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:id="@+id/bComposeMail"
-        android:layout_marginBottom="28dp"
         android:layout_alignParentBottom="true"
         android:layout_alignParentStart="true" />
 
-    <Button
-        android:text="Add Image"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:id="@+id/bAddImage"
-        android:layout_above="@+id/bComposeMail"
-        android:layout_alignParentStart="true"
-        android:layout_marginBottom="12dp" />
-
     <EditText
         android:layout_width="match_parent"
         android:inputType="textPersonName"
@@ -48,27 +40,22 @@
         android:id="@+id/tvEmailMessage"
         android:visibility="visible"
         android:layout_height="280dp"
-        android:layout_above="@+id/bAddImage"
+        android:layout_above="@+id/bComposeMail"
         android:layout_alignParentStart="true"
         android:layout_marginBottom="19dp"
-        android:hint="Enter your complaint here" />
+        android:hint="Enter your complaint here"
+        android:layout_alignParentEnd="true" />
 
     <Button
         android:id="@+id/button2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignTop="@+id/tvEmailMessage"
+        android:text="Get Location"
+        android:layout_above="@+id/tvEmailMessage"
         android:layout_centerHorizontal="true"
-        android:text="Get Location" />
+        android:layout_marginBottom="19dp" />
+
 
-    <Button
-        android:id="@+id/upload_image"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text="Upload Image"
-        android:layout_alignBaseline="@+id/bComposeMail"
-        android:layout_alignBottom="@+id/bComposeMail"
-        android:layout_toEndOf="@+id/button2" />
 
 
 </RelativeLayout>
diff --git a/app/src/main/res/layout/fragment_user_activity.xml b/app/src/main/res/layout/fragment_user_activity.xml
index b48415f2297221c42b5d9091b29299b962170b2c..3e0b260cda16f6d7747ddc6d7641497d62f6ecf7 100644
--- a/app/src/main/res/layout/fragment_user_activity.xml
+++ b/app/src/main/res/layout/fragment_user_activity.xml
@@ -11,20 +11,17 @@
 
 
 
-        <TextView
-            android:text="TextView"
-            android:layout_width="wrap_content"
+        <ListView
+            android:id="@+id/lists"
+            android:layout_width="fill_parent"
             android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_centerHorizontal="true"
-            android:textSize="24sp"
-            android:id="@+id/tvWelcome" />
+            android:divider="@null" />
 
         <Button
             android:text="Sign Out"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@+id/tvWelcome"
+            android:layout_below="@id/lists"
             android:layout_centerHorizontal="true"
             android:layout_marginTop="76dp"
             android:id="@+id/bSignOut" />
diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml
index 34ba0fb44a87c4ee22277c472721d887b32bd9f8..f14046316f659d24135051b2767c477dacd960c7 100644
--- a/app/src/main/res/xml/file_paths.xml
+++ b/app/src/main/res/xml/file_paths.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <paths xmlns:android="http://schemas.android.com/apk/res/android">
-    <external-path name="my_images" path="Android/data/com.example.kishore.afinal/files/Pictures" />
+    <external-path name="my_images" path="/Pictures" />
+
 </paths>
\ No newline at end of file