Skip to content

Instantly share code, notes, and snippets.

@davidelp68
Created September 6, 2020 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidelp68/9eb14c3b9aafa87e5e663c280913c952 to your computer and use it in GitHub Desktop.
Save davidelp68/9eb14c3b9aafa87e5e663c280913c952 to your computer and use it in GitHub Desktop.
Android Studio - Permessi
package com.dm.tutorialpermission7
import android.Manifest
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_main.*
//dichiarazione della variabile SnackBar
var snackBar: Snackbar? = null
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//richiesta dei permessi di accesso ai file contenuti nella memoria del dispositivo
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED) {
//Quando i permessi non sono consentiti
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//Creazione dell'AlertDialog predefinito per la richiesta dei permessi
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
} else {
//inserire qui lo stesso codice come sopra
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)
}
}
else{
//Quando i permessi sono consentiti
}
}
//funzione che recupera la scelta fatta nei permessi
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String?>, grantResults: IntArray) {
if (grantResults.isNotEmpty() && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
//inserire qui il codice da eseguire se i permessi sono concessi
Toast.makeText(this, "Premessi concessi", Toast.LENGTH_SHORT).show()
}
else
{
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
//inserire qui il codice da eseguire se l'utente ha negato il permesso (ma non in modo permanente)
Toast.makeText(this, "Premessi rifiutati in modo temporaneo", Toast.LENGTH_SHORT).show()
}
else {
//inserire qui il codice da eseguire se l'utente ha negato il permesso (in modo permanente)
//cioè è stato selezionato il CheckBox "
snackBar = Snackbar.make(root_layout, """Hai rifiutato questa autorizzazione.
Devi approvare nelle impostazioni dell'app.""", Snackbar.LENGTH_LONG)
snackBar!!.setAction("Imposta", View.OnClickListener {
//inserire il codice che deve essere eseguito quando si preme il pulsante
//all'interno della SnackBar
startActivity(Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:com.dm.tutorialpermission7")))
})
snackBar!!.show()
}
}
return
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment