permissionsdispatcher的用法(用起來並沒有多好用)


10k star的動態權限申請框架

優勢:全面支持Kotlin和Java

   使用注解

   100%無反射

      支持特殊權限,例如WRITE_SETTINGS,SYSTEM_ALERT_WINDOW等

用法:

可以使用ktx或者kapt或者Java

以下以kapt為例子,添加依賴

 //permission
    def permission_version = "4.7.0"
    implementation "org.permissionsdispatcher:permissionsdispatcher:${permission_version}"
    kapt "org.permissionsdispatcher:permissionsdispatcher-processor:${permission_version}"

在你要申請的類里進行操作:

首先這個類用到了動態權限就需要添加RuntimePermissions注解


@RuntimePermissions
class MainActivity : AppCompatActivity() {}

申請的權限還是需要在Manifest文件注冊

Add the following line to AndroidManifest.xml:

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

在需要使用相機的方法添加@NeedPermission注解,如下:

 
         
@NeedsPermission(Manifest.permission.CAMERA)
fun initFaceCamera() {

}
 

拒絕權限的提示

    @OnPermissionDenied(Manifest.permission.CAMERA)
    void showDenied() {
        Toast.makeText(MainActivity.this, "無法獲得權限", Toast.LENGTH_SHORT).show();
    }

這里還沒結束,還要生成委托MainActivityPermissionsDispatcher,可以Make Project一下,生成文件的路徑為

\app\build\generated\source\kapt\debug\對應類路徑

在OnCreate或者合適的地方調用

 initFaceCameraWithPermissionCheck()  

此方法就是在MainActivityPermissionsDispatcher中的,由框架生成的@NeedsPermission注解的initFaceCamera()的代理方法

 

 同時還需在OnRequesetPermissionsResult里調用上面圖中的onRequestPermissionsResult方法

    override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        onRequestPermissionsResult(requestCode, grantResults)
     }

至此才能正確處理相機動態權限,如果是Java應該需要用類名.方法名調用

相比Rxpermissions沒有更簡單,相比EasyPermissions也沒有更清楚,如果你使用kotlinx或者kapt可以采取這種方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM