diff --git a/app/src/main/java/fr/imt_atlantique/myfirstapplication/DisplayUserFragment.java b/app/src/main/java/fr/imt_atlantique/myfirstapplication/DisplayUserFragment.java
index 9396dd852bc13dee6c381cd833ea705687ef6c6b..2fe5db5ed9afa03112714d2643ce95fdc667cd7d 100644
--- a/app/src/main/java/fr/imt_atlantique/myfirstapplication/DisplayUserFragment.java
+++ b/app/src/main/java/fr/imt_atlantique/myfirstapplication/DisplayUserFragment.java
@@ -1,7 +1,14 @@
 package fr.imt_atlantique.myfirstapplication;
 
+import android.Manifest;
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.net.Uri;
 import android.os.Bundle;
 
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
 import androidx.fragment.app.Fragment;
 
 import android.view.LayoutInflater;
@@ -9,6 +16,9 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.android.material.snackbar.Snackbar;
 
 import java.util.ArrayList;
 
@@ -21,7 +31,6 @@ public class DisplayUserFragment extends Fragment {
     private static final String ARG_BIRTH_DATE = "paramBirthDate";
     private static final String ARG_PHONE_NUMBERS_LIST = "paramPhoneNumbersList";
 
-    // TODO: Rename and change types of parameters
     private String mFirstName;
     private String mLastName;
     private String mBirthCity;
@@ -29,6 +38,8 @@ public class DisplayUserFragment extends Fragment {
     private String mBirthDate;
     private ArrayList<String> mPhoneNumbersList;
 
+    private View rootView;
+
     public DisplayUserFragment() {
         // Required empty public constructor
     }
@@ -87,6 +98,46 @@ public class DisplayUserFragment extends Fragment {
             phonesLinearLayout.addView(phoneView);
         }
 
+        rootView = view;
         return view;
     }
+
+    public void callPhoneNumber(View v) {
+        ViewGroup phoneRow = (ViewGroup) v.getParent();
+        TextView phoneTextView = phoneRow.findViewById(R.id.secondPhoneNumberTextView);
+        String phoneNumber = phoneTextView.getText().toString();
+
+        if (phoneNumber.trim().isEmpty()) {
+            Snackbar.make(rootView.findViewById(R.id.mainContent),
+                    getString(R.string.invalid_phone_number), Snackbar.LENGTH_LONG).show();
+            return;
+        }
+
+        // We check for the application "Call permission"
+        if (ContextCompat.checkSelfPermission(requireContext(),
+                Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
+            grantPermissionAlertDialog();
+            return;
+        }
+
+        // Just in case, we try/catch possible security exceptions
+        try {
+            Intent callIntent = new Intent(Intent.ACTION_CALL);
+            callIntent.setData(Uri.parse("tel:" + phoneNumber));
+            startActivity(callIntent);
+        } catch (SecurityException e) {
+            Snackbar.make(v, getString(R.string.call_attempt_error) + e, Snackbar.LENGTH_SHORT).show();
+        }
+    }
+
+    private void grantPermissionAlertDialog() {
+        new AlertDialog.Builder(requireContext())
+                .setTitle(getString(R.string.call_permission_title))
+                .setMessage(getString(R.string.call_permission_message))
+                .setNegativeButton(getString(R.string.cancel), (dialog, which) -> Toast.makeText(requireContext(), getString(R.string.permission_denied), Toast.LENGTH_SHORT)
+                        .show())
+                .setPositiveButton("Ok", (dialog, which) -> ActivityCompat.requestPermissions(requireActivity(), new String[]{Manifest.permission.CALL_PHONE}, 3))
+                .create()
+                .show();
+    }
 }
\ No newline at end of file