MitraIde

News

Cari Di Situs Ini

Minggu, 31 Oktober 2021

Cara membuat request permission, dialog request acess hardware kotlin android

Cara membuat peringatan izin pada android menggunakan kotlin, langkah mudah membuat perimintaan izin akses hardware android menggunakan kotlin, cara cepat membuat request permintaan untuk mengakses hardware atau fitur pada andorid studio menggunakan kotlin.

Halo teman-teman, ketemu lagi dengan kak mitra. seperti biasa kali ini kak mitra akan share pengalaman kak mitra atau tutorial singkat dari kak mitra tentang andorid programming menggunakan kotlin. jadi begini kali ini kak mitra mendapatkan request atau jobdesk dari teman kak mitra untuk membantu membuatkan fitur programnya, jadi teman kakak ini minta agar programnya bisa atau dapat mengakses fitur hardware di dalam android. beberapa fitur ini seperti Internet, SMS, Camera, Microphone dan lain-lain. Mungkin sedikit sulit dipahami kalau dijelaskan via deskripsi. baik kak mitra akan berikan contoh screenshot dari request hardware yang kak mitra maksudkan. teman-teman dapat melihat pada gambar di bawah ini : 



Dari gambar di atas, program meminta user untuk memberikan izin kepada program atau aplikasi untuk mengakses kamera di hardware android. hal ini dikarenakan program membutuhkan akses kamera untuk berjalan. sebenarnya ada cara lain apabila programer tidak meminginkan cara automatis dialog seperti ini. yakni dengan mengallow secara manual setiap program. namun cara seperti ini tidak efektif. karena hal tersebut cara memberikan izin akses secara manual (satu persatu) tidak dianjurkan.


Oke teman, tanpa berlama-lama berikut ini adalah langkah-langkah membuat alert dialog request allow permission pada android menggunakan kotlin :

1. Buka android studio , kak mitra asumsikan teman-teman sudah melakukan installasi android studio beserta paket-paket yang dibutuhkan, minimal sudah bisa menjalankan hello world ya. apabila teman teman belum melakukan installasi android studio ada baiknya teman teman membaca artikel kak mitra yang lama tentang cara installasi android studio


2. Buat projek baru dengan nama sesuai selera teman-teman. di sini kak mitra menggunakan nama Permission dan tunggu hingga proses graddle selesai dengan sukses


Saat proses graddle selesai, buka 3 file berikut ini karena hanya 3 file ini yang akan kita configurasikan

- AndroidManifest.xml

- activity_main.xml

- MainActivity.kt


3. AndroidManifest.xml Pada file AndroidManifest ini konfigurasikan file seperti berikut ini 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.permission">

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Permission">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

NB : Perhatikan tag <uses-permission di situ kak mitra meminta untuk mengakses Lokasi, Camera, Calender dan microphone (Audio)


4. activity_main.xml untuk mengkonfigurasi file ini sebenarnya bebas, teman-teman bisa membuat sendiri. kak mitra menggunakan code ini 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:padding="8dp"
android:text="Mitraide.blogspot.com"
android:textColor="@android:color/holo_green_dark"
android:textSize="48sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:padding="4dp"
android:textColor="@android:color/background_dark"
android:text="Request Location permission at Run time!"
android:textAlignment="center"
android:textSize="36sp"
android:textStyle="bold" />


</RelativeLayout>


5. MainActivity.kt (ini adalah file yang paling penting, ubah kodenya menjadi seperti berikut ini 

package com.example.permission

import android.Manifest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.content.pm.PackageManager
import android.util.Log
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
chekCamera()
}


fun chekCamera(){
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.CAMERA) !== PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this@MainActivity, Manifest.permission.CAMERA)) {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.CAMERA), 1)
} else {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.CAMERA), 1)
}
}
}


fun cekWriteCalender(){
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.WRITE_CALENDAR) !== PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this@MainActivity, Manifest.permission.WRITE_CALENDAR)) {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.WRITE_CALENDAR), 2)
} else {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.WRITE_CALENDAR), 2)
}
}
}

fun cekReadCalender(){
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.READ_CALENDAR) !== PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this@MainActivity, Manifest.permission.READ_CALENDAR)) {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.READ_CALENDAR), 3)
} else {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.READ_CALENDAR), 3)
}
}
}

fun cekRecordAudio(){
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.RECORD_AUDIO) !== PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this@MainActivity, Manifest.permission.RECORD_AUDIO)) {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.RECORD_AUDIO), 4)
} else {
ActivityCompat.requestPermissions(this@MainActivity, arrayOf(Manifest.permission.RECORD_AUDIO), 4)
}
}
}



override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
when (requestCode) {
1 -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if ((ContextCompat.checkSelfPermission(this@MainActivity,Manifest.permission.CAMERA) === PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show()
Log.d("logData","CAMERA oke")
cekWriteCalender()
}
} else {
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
}
return
}

2 -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if ((ContextCompat.checkSelfPermission(this@MainActivity,Manifest.permission.WRITE_CALENDAR) === PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show()
Log.d("logData","WRITE_CALENDAR oke")
cekReadCalender()
}
} else {
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
}
return
}

3 -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if ((ContextCompat.checkSelfPermission(this@MainActivity,Manifest.permission.READ_CALENDAR) === PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show()
Log.d("logData","READ_CALENDAR oke")
cekRecordAudio()
}
} else {
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
}
return
}

4 -> {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if ((ContextCompat.checkSelfPermission(this@MainActivity,Manifest.permission.RECORD_AUDIO) === PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(this, "Permission Granted", Toast.LENGTH_SHORT).show()
Log.d("logData","RECORD_AUDIO oke")
}
} else {
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
}
return
}

}
}
}


Oke. apabila konfigrasi sudah selesai dilakukan, teman-teman dapat mencoba melakukan running program. apabila tidak ada yang salah seharusnya program sudah bisa berjalan dengan baik seperti gambar berikut ini 



Apabila teman-teman mengklik Allow maka otomatsi teman-teman memberikan izin kepada program untuk mengakses Camera. oh iya dialog ini hanya akan muncul ketika teman-teman belum memberikan izin allow kepada program. ketika sudah memberikan izin allow meskipun satu kali saja. maka dialog ini tidak akan muncul kembali.


Kak mitra sudah menjalankan cara di atas dan berjalan dengan baik untuk kak mitra. 

bagi teman-teman yang ingin melihat code lengkap dapat melihat pada almat berikut ini 

github.com/mitraide/permissionAndroid


Sampai jumpa di artikel selanjutnya teman-teman