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/activity/BajajFdMainActivity.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
index cd91b20..8bd7fe8 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/activity/BajajFdMainActivity.kt
@@ -223,13 +223,13 @@ class BajajFdMainActivity : BaseActivity() {
// set viewPager
sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager, fragments, stepsCount)
val viewPager: DisableAdapter = binding.viewPager
- viewPager.setPagingEnabled(false)
viewPager.adapter = sectionsPagerAdapter
- if (sectionsPagerAdapter.count > 1) {
- viewPager.offscreenPageLimit = sectionsPagerAdapter.count - 1
- } else {
- viewPager.offscreenPageLimit = 1
- }
+ viewPager.setPagingEnabled(false)
+ // if (sectionsPagerAdapter.count > 1) {
+ viewPager.offscreenPageLimit = stepCount - 1
+ // } else {
+ // viewPager.offscreenPageLimit = 1
+ // }
viewPager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
override fun onPageScrolled(
position: Int,
@@ -368,6 +368,9 @@ class BajajFdMainActivity : BaseActivity() {
// step 2 response
fun stepTwoApi() {
binding.viewPager.currentItem = 2
+ if (stepCount == 3) {
+ stepFourBajajFDFragment.displayReceivedData()
+ }
}
// step 3 response
@@ -431,7 +434,7 @@ class BajajFdMainActivity : BaseActivity() {
viewModel.getPaymentReQueryMutableData.observe(this) { response ->
when (response) {
is Resource.Success -> {
- Log.e("response", "-->$response")
+ Log.e("paymentReQueryApi ", "response -->$response")
val paymentReQueryResponse: PaymentReQueryResponse =
Gson().fromJson(
response.data?.toString(),
diff --git a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt
index b156e53..bd77401 100644
--- a/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt
+++ b/app/src/main/java/com/nivesh/production/bajajfd/ui/fragment/StepFiveBajajFDFragment.kt
@@ -18,7 +18,9 @@ class StepFiveBajajFDFragment : Fragment() {
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
- _binding = FragmentBajajfdStepFiveBinding.inflate(inflater, container, false)
+ binding.apply {
+ _binding = FragmentBajajfdStepFiveBinding.inflate(inflater, container, false)
+ }
return binding.root
}
@@ -35,10 +37,11 @@ class StepFiveBajajFDFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ binding.tvCongrats.text = ""
+ binding.tvSuccessMessage.text = ""
binding.btnViewOrder.setOnClickListener {
}
-
}
override fun onDestroyView() {
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 f8a869f..9d541df 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
@@ -2,14 +2,18 @@ package com.nivesh.production.bajajfd.ui.fragment
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
import android.graphics.BitmapFactory
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
@@ -19,6 +23,7 @@ import android.widget.*
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
+import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.fragment.app.Fragment
@@ -31,13 +36,17 @@ 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() {
+
private var _binding: FragmentBajajfdStepThreeBinding? = null
private val binding get() = _binding!!
@@ -48,7 +57,6 @@ class StepThreeBajajFDFragment : Fragment() {
private val mapImage: HashMap = HashMap()
private lateinit var listOfDocType: List
- private var check: Array? = null
private var panString: String = ""
private var photoString: String = ""
@@ -65,18 +73,40 @@ class StepThreeBajajFDFragment : Fragment() {
private val secondDocUpload: Int = 4
private var actionType: Int = -1
+ private val permissions = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ arrayOf(
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_MEDIA_IMAGES
+ )
+ } else {
+ arrayOf(
+ Manifest.permission.READ_EXTERNAL_STORAGE,
+ Manifest.permission.WRITE_EXTERNAL_STORAGE
+ )
+ }
- private val requestPermission = registerForActivityResult(
+ 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)) {
+ selectImageIntent?.launch("image/*")
+ } else {
+ showDialogWithTwoButtons((activity as BajajFdMainActivity), getString(R.string.galleryPermission), getString(
+ R.string.permissionsRequired))
+ }
+ }
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
@@ -90,12 +120,6 @@ class StepThreeBajajFDFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- check = arrayOf(
- getString(R.string.takePhoto),
- getString(R.string.chooseFromGallery),
- getString(R.string.cancel)
- )
-
selectImageIntent = registerForActivityResult(ActivityResultContracts.GetContent())
{ uri: Uri? ->
if (uri != null) {
@@ -213,57 +237,75 @@ class StepThreeBajajFDFragment : Fragment() {
getString(R.string.chooseFromGallery),
getString(R.string.cancel)
)
- )
-
- { dialog: DialogInterface, pos ->
- when(pos)
- {
+ ) { dialog: DialogInterface, pos ->
+ when (pos) {
0 -> {
-
- val permission = ContextCompat.checkSelfPermission(
- activity as BajajFdMainActivity,
- Manifest.permission.CAMERA
- )
- if (permission == PackageManager.PERMISSION_GRANTED) {
- takeImage()
- } else {
- requestPermission.launch(
+ if (hasPermissions(
+ activity as BajajFdMainActivity,
Manifest.permission.CAMERA
)
+ ) {
+ takeImage()
+ } else {
+ onClickRequestPermission()
}
dialog.dismiss()
-
}
-
- 1->
- {
-
- val permission = ContextCompat.checkSelfPermission(
- activity as BajajFdMainActivity,
- Manifest.permission.READ_EXTERNAL_STORAGE
- )
- if (permission == PackageManager.PERMISSION_GRANTED) {
+ 1 -> {
+ if (hasPermissions(activity as BajajFdMainActivity, *permissions)) {
selectImageIntent?.launch("image/*")
} else {
- requestPermission.launch(
- Manifest.permission.READ_EXTERNAL_STORAGE
- )
+ requestGalleryPermission.launch(permissions)
}
-
dialog.dismiss()
-
}
- else->
- {
+ else -> {
dialog.dismiss()
-
}
-
}
}
builder.show()
}
+ private fun hasPermissions(activity: Activity, vararg permissions: String?): Boolean {
+ for (permission in permissions) {
+ if (ActivityCompat.checkSelfPermission(
+ activity,
+ permission!!
+ ) != PackageManager.PERMISSION_GRANTED
+ ) {
+ return false
+ }
+ }
+ return true
+ }
+
+ private fun onClickRequestPermission() {
+ when {
+ ContextCompat.checkSelfPermission(
+ activity as BajajFdMainActivity,
+ Manifest.permission.CAMERA
+ ) == PackageManager.PERMISSION_GRANTED -> {
+
+ }
+
+ ActivityCompat.shouldShowRequestPermissionRationale(
+ activity as BajajFdMainActivity,
+ Manifest.permission.CAMERA
+ ) -> {
+ requestCameraPermission.launch(
+ Manifest.permission.CAMERA
+ )
+ }
+
+ else -> {
+ requestCameraPermission.launch(
+ Manifest.permission.CAMERA
+ )
+ }
+ }
+ }
+
private fun setOtherUploadLayout(itemName: String?) {
binding.tvAadhaarFront.text = itemName.plus(" Front *")
if (binding.tvAadhaarBack.visibility == View.VISIBLE) binding.tvAadhaarBack.visibility =
@@ -546,11 +588,11 @@ class StepThreeBajajFDFragment : Fragment() {
)
binding.spDocType.setAdapter(adapter)
binding.spDocType.setText(
- adapter.getItem(0)?.Value,
+ adapter.getItem(0)?.Label,
false
)
- setOtherUploadLayout(adapter.getItem(0)?.Value)
- docValue = adapter.getItem(0)?.Value.toString()
+ setOtherUploadLayout(adapter.getItem(0)?.Label)
+ docValue = adapter.getItem(0)?.Label.toString()
}
}
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/layout/fragment_bajajfd_step_five.xml b/app/src/main/res/layout/fragment_bajajfd_step_five.xml
index fd8e4b1..e8017e7 100644
--- a/app/src/main/res/layout/fragment_bajajfd_step_five.xml
+++ b/app/src/main/res/layout/fragment_bajajfd_step_five.xml
@@ -88,6 +88,7 @@
android:layout_marginTop="12dp"
android:textColor="@color/black"
android:textSize="@dimen/text_size_17"
+ android:text=""
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.437"
app:layout_constraintStart_toStartOf="parent"
@@ -101,6 +102,7 @@
android:layout_marginTop="16dp"
android:textColor="@color/black"
android:textSize="@dimen/text_size_16"
+ android:text=""
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.419"
app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml
index 8965015..0be7cc0 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 !
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