Android Permission Library

Installation

https://jitpack.io/#nhancv/nc-android-permission/

Declare permission in Manifest

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<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" />

<uses-feature android:name="android.hardware.camera" />

<uses-feature android:name="android.hardware.camera.autofocus" />

In MainActivity implements OnPermissionResult

Option 1: Request permission explicitly in Runtime purpose

Ex

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.nhancv.npermission.ExplicitPermissionResult
import com.nhancv.npermission.NExplicitPermission

class MainActivity : AppCompatActivity(), ExplicitPermissionResult {
 
    private var nCameraPermission: NExplicitPermission? = null
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // @nhancv 2019-08-25: Create permission controller
        nCameraPermission = NExplicitPermission(this,
                explicitPermissionResult = this)
    }
 
    override fun onResume() {
        super.onResume()
        nCameraPermission?.requestPermission(android.Manifest.permission.CAMERA, false)
    }
 
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        nCameraPermission!!.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }
 
    override fun onExplicitPermissionResult(permission: String, isGranted: Boolean) {
        Log.e(TAG, "onExplicitPermissionResult: $permission isGranted: $isGranted")
    }
 
    companion object {
        private val TAG = MainActivity::class.java.simpleName
    }
}

Option 2: Just request force all permission must be granted. The permission will be fetched from manifests

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.nhancv.npermission.AllPermissionResult
import com.nhancv.npermission.NAllPermission
 
 
class MainActivity : AppCompatActivity(), AllPermissionResult {
 
    private var nAllPermission: NAllPermission? = null
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // @nhancv 2019-08-25: Create permission controller
        nAllPermission = NAllPermission(this,
                allPermissionResult = this)
    }
 
    override fun onResume() {
        super.onResume()
        nAllPermission?.forceAllPermissionGranted()
    }
 
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        nAllPermission!!.onRequestPermissionsResult(requestCode, permissions, grantResults)
    }
 
    override fun onAllPermissionGranted() {
        Log.e(TAG, "onAllPermissionGranted: isAllGranted")
    }
 
    companion object {
        private val TAG = MainActivity::class.java.simpleName
    }
}

Leave a Reply

Your email address will not be published.Required fields are marked *