Skip to content
Snippets Groups Projects
Commit 06aca573 authored by s22thong's avatar s22thong
Browse files

fix(UX): AlertDialog for Call permission in DisplayUser Fragment

parent 11e915e6
No related branches found
No related tags found
No related merge requests found
package fr.imt_atlantique.myfirstapplication; 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 android.os.Bundle;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -9,6 +16,9 @@ import android.view.View; ...@@ -9,6 +16,9 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -21,7 +31,6 @@ public class DisplayUserFragment extends Fragment { ...@@ -21,7 +31,6 @@ public class DisplayUserFragment extends Fragment {
private static final String ARG_BIRTH_DATE = "paramBirthDate"; private static final String ARG_BIRTH_DATE = "paramBirthDate";
private static final String ARG_PHONE_NUMBERS_LIST = "paramPhoneNumbersList"; private static final String ARG_PHONE_NUMBERS_LIST = "paramPhoneNumbersList";
// TODO: Rename and change types of parameters
private String mFirstName; private String mFirstName;
private String mLastName; private String mLastName;
private String mBirthCity; private String mBirthCity;
...@@ -29,6 +38,8 @@ public class DisplayUserFragment extends Fragment { ...@@ -29,6 +38,8 @@ public class DisplayUserFragment extends Fragment {
private String mBirthDate; private String mBirthDate;
private ArrayList<String> mPhoneNumbersList; private ArrayList<String> mPhoneNumbersList;
private View rootView;
public DisplayUserFragment() { public DisplayUserFragment() {
// Required empty public constructor // Required empty public constructor
} }
...@@ -87,6 +98,46 @@ public class DisplayUserFragment extends Fragment { ...@@ -87,6 +98,46 @@ public class DisplayUserFragment extends Fragment {
phonesLinearLayout.addView(phoneView); phonesLinearLayout.addView(phoneView);
} }
rootView = view;
return 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment