[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-android] 03/03: [anastasis] ask for permission to fill in p
From: |
gnunet |
Subject: |
[taler-taler-android] 03/03: [anastasis] ask for permission to fill in phone number automatically |
Date: |
Fri, 26 Jun 2020 19:16:22 +0200 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository taler-android.
commit 97dac704bcc5f4dc441f0d31c4a680235ad50e2e
Author: Torsten Grote <t@grobox.de>
AuthorDate: Fri Jun 26 14:15:34 2020 -0300
[anastasis] ask for permission to fill in phone number automatically
---
anastasis-ui/src/main/AndroidManifest.xml | 2 +
.../main/java/org/gnu/anastasis/ui/MainActivity.kt | 2 +
.../gnu/anastasis/ui/authentication/SmsFragment.kt | 50 ++++++++++++++++++++++
3 files changed, 54 insertions(+)
diff --git a/anastasis-ui/src/main/AndroidManifest.xml
b/anastasis-ui/src/main/AndroidManifest.xml
index 3f2402b..9340508 100644
--- a/anastasis-ui/src/main/AndroidManifest.xml
+++ b/anastasis-ui/src/main/AndroidManifest.xml
@@ -17,6 +17,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.gnu.anastasis.ui">
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+
<application>
<activity
android:name=".MainActivity"
diff --git a/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
index 3ca3224..ac355c1 100644
--- a/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
+++ b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/MainActivity.kt
@@ -24,6 +24,8 @@ import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupWithNavController
import kotlinx.android.synthetic.main.activity.*
+internal const val PERMISSION_REQUEST_CODE = 1
+
class MainActivity : AppCompatActivity() {
private lateinit var nav: NavController
diff --git
a/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
index 2ceb422..f20fba5 100644
---
a/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
+++
b/anastasis-ui/src/main/java/org/gnu/anastasis/ui/authentication/SmsFragment.kt
@@ -16,10 +16,16 @@
package org.gnu.anastasis.ui.authentication
+import android.Manifest
+import android.annotation.SuppressLint
+import android.content.pm.PackageManager.PERMISSION_GRANTED
import android.os.Bundle
+import android.telephony.TelephonyManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.annotation.RequiresPermission
+import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController
@@ -27,8 +33,11 @@ import
com.google.android.material.transition.MaterialContainerTransform
import
com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS
import kotlinx.android.synthetic.main.fragment_sms.*
import org.gnu.anastasis.ui.MainViewModel
+import org.gnu.anastasis.ui.PERMISSION_REQUEST_CODE
import org.gnu.anastasis.ui.R
+private const val PERMISSION = Manifest.permission.READ_PHONE_STATE
+
class SmsFragment : Fragment() {
private val viewModel: MainViewModel by activityViewModels()
@@ -46,10 +55,51 @@ class SmsFragment : Fragment() {
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ smsView.editText?.setOnFocusChangeListener { _, hasFocus ->
+ if (hasFocus) checkPerm()
+ }
saveSmsButton.setOnClickListener {
viewModel.smsChecked.value = true
findNavController().popBackStack()
}
}
+ private fun checkPerm() = when {
+ ContextCompat.checkSelfPermission(requireContext(), PERMISSION)
+ == PERMISSION_GRANTED -> {
+ // You can use the API that requires the permission.
+ fillPhoneNumber()
+ }
+ shouldShowRequestPermissionRationale(PERMISSION) -> {
+ // In an educational UI, explain to the user why your app requires
this
+ // permission for a specific feature to behave as expected. In
this UI,
+ // include a "cancel" or "no thanks" button that allows the user to
+ // continue using your app without granting the permission.
+ }
+ else -> {
+ // You can directly ask for the permission.
+ requestPermissions(arrayOf(PERMISSION), PERMISSION_REQUEST_CODE)
+ }
+ }
+
+ override fun onRequestPermissionsResult(
+ requestCode: Int,
+ permissions: Array<String>,
+ grantResults: IntArray
+ ) {
+ if (requestCode == PERMISSION_REQUEST_CODE &&
grantResults.isNotEmpty() &&
+ grantResults[0] == PERMISSION_GRANTED
+ ) checkPerm()
+ }
+
+ @SuppressLint("HardwareIds")
+ @RequiresPermission(PERMISSION)
+ private fun fillPhoneNumber() {
+ val telephonyService =
requireContext().getSystemService(TelephonyManager::class.java)
+ telephonyService?.line1Number?.let { phoneNumber ->
+ smsView?.editText?.setText(phoneNumber)
+ smsView?.editText?.setSelection(phoneNumber.length)
+ }
+ }
+
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.