package com.sibatel.solarapp.ui import android.Manifest import android.app.AlertDialog import android.content.DialogInterface import android.content.Intent import android.content.pm.PackageManager import android.os.Build import android.os.Bundle import android.os.Handler import android.view.Window import android.view.WindowManager import android.view.animation.AnimationUtils import android.widget.ImageView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.sibatel.solarapp.R import com.sibatel.solarapp.ui.MainActivity class SplashActivity : AppCompatActivity() { private val PERMISSION_REQUEST_CODE = 200 private val STORAGE_PERMISSION_REQUEST_CODE = 400 private val WRITE_PERMISSION_REQUEST_CODE = 201 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (checkPermissionWriteStorage()){ if (checkPermissionStorage()){ if (checkPermissionCamera()) { setContentView(R.layout.activity_splashcreen) val backgroundImage: ImageView = findViewById(R.id.splash) val slideAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump) backgroundImage.startAnimation(slideAnimation) Handler().postDelayed({ val intent = Intent(this, LoginActivity::class.java) startActivity(intent) finish() }, 3000) } else { requestPermissionCamera() } }else{ requestPermissionStorage() } }else{ requestPermissionWriteStorage() } } private fun checkPermissionCamera(): Boolean { return ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED } private fun checkPermissionStorage(): Boolean { return ContextCompat.checkSelfPermission( this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED } private fun checkPermissionWriteStorage(): Boolean { return ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED } private fun requestPermissionCamera() { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.CAMERA), PERMISSION_REQUEST_CODE ) } private fun requestPermissionStorage() { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), STORAGE_PERMISSION_REQUEST_CODE ) } private fun requestPermissionWriteStorage() { ActivityCompat.requestPermissions( this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), WRITE_PERMISSION_REQUEST_CODE ) } override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<String>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) when (requestCode) { PERMISSION_REQUEST_CODE -> if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_SHORT).show() setContentView(R.layout.activity_splashcreen) val backgroundImage: ImageView = findViewById(R.id.splash) val slideAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump) backgroundImage.startAnimation(slideAnimation) Handler().postDelayed({ val intent = Intent(this, LoginActivity::class.java) startActivity(intent) finish() }, 3000) // 3000 is the delayed time in milliseconds. // main logic } else { Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_SHORT).show() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED ) { showMessageOKCancel( "You need to allow access permissions" ) { dialog, which -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissionCamera() } } } } } STORAGE_PERMISSION_REQUEST_CODE -> if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_SHORT).show() requestPermissionCamera() } else { Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_SHORT).show() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) { showMessageOKCancel( "You need to allow access permissions" ) { dialog, which -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissionStorage() } } } } } WRITE_PERMISSION_REQUEST_CODE -> if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(applicationContext, "Permission Granted", Toast.LENGTH_SHORT).show() requestPermissionCamera() } else { Toast.makeText(applicationContext, "Permission Denied", Toast.LENGTH_SHORT).show() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED ) { showMessageOKCancel( "You need to allow access permissions" ) { dialog, which -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissionWriteStorage() } } } } } } } private fun showMessageOKCancel(message: String, okListener: DialogInterface.OnClickListener) { AlertDialog.Builder(this) .setMessage(message) .setPositiveButton("OK", okListener) .setNegativeButton("Cancel", null) .create() .show() } }