Skip to content

Instantly share code, notes, and snippets.

View hamurcuabi's full-sized avatar
🏠
Working from home

Emre Hamurcu hamurcuabi

🏠
Working from home
View GitHub Profile
private fun getPermissionState(activity: Activity, result: Map<String, Boolean>): PermissionState {
val deniedPermissions = result.filterValues { !it }.keys
return when {
deniedPermissions.isEmpty() -> PermissionState.Granted
deniedPermissions.any { permission ->
!shouldShowRequestPermissionRationale(
/* activity = */
activity,
/* permission = */
fun Fragment.registerPermission(onPermissionResult: (PermissionState) -> Unit): Permission {
return Permission(
this.registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
onPermissionResult(getPermissionState(activity, it))
}
)
}
fun AppCompatActivity.registerPermission(onPermissionResult: (PermissionState) -> Unit): Permission {
return Permission(
@JvmInline
value class Permission(val result: ActivityResultLauncher<Array<String>>)
sealed class PermissionState {
object Granted : PermissionState()
object Denied : PermissionState()
object PermanentlyDenied : PermissionState()
}
// Activity and the permission is needed
val isPermanentluDenied= shouldShowRequestPermissionRationale(activity, android.Manifest.permission.CAMERA)
// Define a permission request
private val cameraPermission = registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
if(granted){
}
}
//launch it
cameraPermission.launch(android.Manifest.permission.CAMERA)
@hamurcuabi
hamurcuabi / AndroidManifest.xml
Last active April 14, 2022 09:56
permission
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
class FlowObserver<T> (
lifecycleOwner: LifecycleOwner,
private val flow: Flow<T>,
private val collector: suspend (T) -> Unit
) {
private var job: Job? = null
init {
lifecycleOwner.lifecycle.addObserver(LifecycleEventObserver {
@hamurcuabi
hamurcuabi / MainActivity.kt
Created March 23, 2022 13:33
Prdownloader
package com.example.downloadmanager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.os.Environment
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
package app.lagina.utils
import android.content.Context
import android.content.ContextWrapper
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Build
import android.os.LocaleList
import java.util.*