From 69618141f26fdb81155cfce8fe1a0aca5ada321e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sun, 5 Apr 2020 18:23:29 +0200 Subject: [PATCH] Forgot to check/ask for WRITE_CONTACTS permission in contact editor fragment --- .../fragments/ContactEditorFragment.kt | 24 +++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 25 insertions(+) diff --git a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt index bd05764d3..9480f004c 100644 --- a/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/contact/fragments/ContactEditorFragment.kt @@ -21,6 +21,7 @@ package org.linphone.activities.main.contact.fragments import android.app.Activity import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import android.os.Parcelable @@ -33,6 +34,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import java.io.File import org.linphone.R +import org.linphone.activities.main.MainActivity import org.linphone.activities.main.contact.viewmodels.* import org.linphone.activities.main.viewmodels.SharedMainViewModel import org.linphone.contact.NativeContact @@ -101,6 +103,28 @@ class ContactEditorFragment : Fragment() { list.add(newSipUri) viewModel.addresses.value = list } + + if (!PermissionHelper.required(requireContext()).hasWriteContactsPermission()) { + Log.i("[Contact Editor] Asking for WRITE_CONTACTS permission") + requestPermissions(arrayOf(android.Manifest.permission.WRITE_CONTACTS), 0) + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + if (requestCode == 0) { + val granted = grantResults[0] == PackageManager.PERMISSION_GRANTED + if (granted) { + Log.i("[Contact Editor] WRITE_CONTACTS permission granted") + } else { + Log.w("[Contact Editor] WRITE_CONTACTS permission denied") + (requireActivity() as MainActivity).showSnackBar(R.string.contact_editor_write_permission_denied) + findNavController().popBackStack() + } + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 810eeb9b7..f417d4000 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -90,6 +90,7 @@ First name Organization Select a contact or create a new one + Write Contacts permission denied, can\'t edit contact Enter a number or an address