diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2490fea..245ae96 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,9 +5,7 @@
+ android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
index 21ce6bb..4fa89e1 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepThreeBajajFDFragment.kt
@@ -4,6 +4,7 @@ import android.Manifest
import android.annotation.SuppressLint
import android.app.Activity
import android.content.DialogInterface
+import android.content.Intent
import android.content.pm.PackageManager
import android.database.Cursor
import android.graphics.Bitmap
@@ -12,6 +13,7 @@ import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.provider.OpenableColumns
+import android.provider.Settings
import android.util.Base64
import android.util.Log
import android.view.LayoutInflater
@@ -34,10 +36,12 @@ import com.nivesh.production.bajajfd.model.*
import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import com.nivesh.production.bajajfd.util.Common
import com.nivesh.production.bajajfd.util.Common.Companion.getFileExtension
+import com.nivesh.production.bajajfd.util.Common.Companion.showDialogWithTwoButtons
import com.nivesh.production.bajajfd.util.Constants
import com.nivesh.production.bajajfd.util.ImageUtil
import com.nivesh.production.bajajfd.util.Resource
import java.io.*
+import java.util.*
class StepThreeBajajFDFragment : Fragment() {
@@ -81,39 +85,29 @@ class StepThreeBajajFDFragment : Fragment() {
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
}
- private val askPermissions = mutableListOf()
private val requestCameraPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
- Log.e("Permission: ", "Granted")
+ takeImage()
} else {
- Log.e("Permission: ", "Denied")
+ showDialogWithTwoButtons((activity as BajajFdMainActivity), getString(R.string.cameraPermission), getString(
+ R.string.permissionRequired))
}
-
}
private val requestGalleryPermission = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()
- ) { permission ->
-
- if (!permission.containsValue(false)){
+ ) { permission ->
+ if (!permission.containsValue(false)) {
selectImageIntent?.launch("image/*")
- }else{
-// for (permissionObj in permissions) {
-// if (ContextCompat.checkSelfPermission(activity as BajajFdMainActivity, permissionObj) != PackageManager.PERMISSION_GRANTED) {
-// askPermissions.add(permissionObj)
-// }
-// }
-// if (askPermissions.isNotEmpty()){
-// requestGalleryPermission.launch(askPermissions)
-// }
+ } else {
+ showDialogWithTwoButtons((activity as BajajFdMainActivity), getString(R.string.galleryPermission), getString(
+ R.string.permissionsRequired))
}
-
}
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -286,7 +280,7 @@ class StepThreeBajajFDFragment : Fragment() {
return true
}
- fun onClickRequestPermission() {
+ private fun onClickRequestPermission() {
when {
ContextCompat.checkSelfPermission(
activity as BajajFdMainActivity,
@@ -312,7 +306,6 @@ class StepThreeBajajFDFragment : Fragment() {
}
}
-
private fun setOtherUploadLayout(itemName: String?) {
binding.tvAadhaarFront.text = itemName.plus(" Front *")
if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility =
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
index a82a7f9..09aef07 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/util/Common.kt
@@ -4,23 +4,28 @@ import android.Manifest
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
+import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
+import android.net.Uri
import android.os.Build
+import android.provider.Settings
import android.text.format.DateFormat
import android.util.Log
import android.util.Patterns
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
+import androidx.core.content.ContextCompat.startActivity
import com.google.android.material.textfield.MaterialAutoCompleteTextView
import com.google.android.material.textfield.TextInputEditText
import com.google.android.material.textfield.TextInputLayout
import com.google.gson.JsonObject
import com.nivesh.production.bajajfd.R
+import com.nivesh.production.bajajfd.ui.activity.BajajFdMainActivity
import kotlinx.coroutines.CoroutineExceptionHandler
import org.json.JSONObject
import retrofit2.HttpException
@@ -124,11 +129,18 @@ class Common {
builder.show()
}
- fun showDialogWithTwoButtons(activity: Activity?, message: CharSequence?) {
+ fun showDialogWithTwoButtons(activity: Activity?, message: CharSequence?, title: String) {
val builder = AlertDialog.Builder(activity)
+ builder.setTitle(title)
builder.setMessage(message)
if (activity != null) {
builder.setPositiveButton(activity.getString(R.string.Ok)) { dialogInterface, _ ->
+ val intent = Intent(
+ Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
+ Uri.fromParts("package", (activity as BajajFdMainActivity).packageName, null)
+ )
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ activity.startActivity(intent)
dialogInterface.dismiss()
}
builder.setNegativeButton(activity.getString(R.string.cancel)) { dialogInterface, _ ->
@@ -194,21 +206,11 @@ class Common {
}
fun handleResponse(response: Response): Resource {
- // try {
if (response.isSuccessful && response.body() != null) {
response.body()?.let { resultResponse ->
return Resource.Success(resultResponse)
}
}
-// } catch (t: Throwable) {
-// return when (t) {
-// is IOException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
-// is HttpException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
-// is SocketTimeoutException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
-// is UnknownHostException -> Resource.Error("Response : " + t.message.plus(" Cause: " + t.cause))
-// else -> Resource.Error(t.localizedMessage?.toString() ?: "")
-// }
-// }
return Resource.Error(response.message())
}
@@ -247,7 +249,7 @@ class Common {
}
fun isMinor(date: String): Boolean {
- val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
+ val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US)
val dt1: Date = simpleDateFormat.parse(date) as Date
val year: Int = DateFormat.format("yyyy", dt1).toString().toInt()
val month: Int = DateFormat.format("mm", dt1).toString().toInt()
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 2ab4061..96dd577 100644
--- a/app/src/main/res/values-hi-rIN/strings.xml
+++ b/app/src/main/res/values-hi-rIN/strings.xml
@@ -248,6 +248,10 @@
Add New Account
OK
+ You Need to Give Permission of Camera for uploading Image
+ You Need to Give Permission of Gallery for uploading Image
+ Permission Required !
+ Permission\'s Required !
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2ab4061..96dd577 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -248,6 +248,10 @@
Add New Account
OK
+ You Need to Give Permission of Camera for uploading Image
+ You Need to Give Permission of Gallery for uploading Image
+ Permission Required !
+ Permission\'s Required !
\ No newline at end of file