APP开发实战82-Android动态权限申请

来源:互联网 发布:软件设备 编辑:程序博客网 时间:2024/06/05 16:09

21.2动态权限申请

直接使用Android系统的函数实现动态权限申请比较麻烦,目前也有许多开源库实现此功能,其中easypermissions使用比较简单。

示例代码如下:

//build.gradle中添加库

dependencies{

      compile'pub.devrel:easypermissions:0.1.7

}

 

publicclass MainActivity extends Activity implements

        EasyPermissions.PermissionCallbacks {

 

    private static final String TAG ="MainActivity";

 

    private static final intRC_CAMERA_STORAGE_PERM = 110;

   

    @Override

    protected void onCreate(BundlesavedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

 

        findViewById(R.id.button_selectImage).setOnClickListener(newView.OnClickListener() {

            @Override

            public void onClick(View v) {

                selectImageTask ();

            }

        });

 

@AfterPermissionGranted(RC_CAMERA_STORAGE_PERM)

    public void selectImageTask() {

 

        String[] perms = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE };

 

        if(EasyPermissions.hasPermissions(getContext(), perms)) {

            // Have permission, do the thing!

            getImage();

        } else {

            // Ask for one permission

           EasyPermissions.requestPermissions(this,getString(R.string.rationale_camera_storge),

                    RC_CAMERA_STORAGE_PERM,perms);

        }

    }

 

    @Override

    public void onRequestPermissionsResult(intrequestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

       super.onRequestPermissionsResult(requestCode, permissions,grantResults);

 

        // EasyPermissions handles the requestresult.

        EasyPermissions.onRequestPermissionsResult(requestCode,permissions, grantResults, this);

    }

 

    @Override

    public void onPermissionsGranted(intrequestCode, List<String> perms) {

        //Log.d(TAG,"onPermissionsGranted:" + requestCode + ":" +perms.size());

    }

 

    @Override

    public void onPermissionsDenied(intrequestCode, List<String> perms) {

        //Log.d(TAG,"onPermissionsDenied:" + requestCode + ":" + perms.size());

 

        // (Optional) Check whether the userdenied permissions and checked NEVER ASK AGAIN.

        // This will display a dialog directingthem to enable the permission in app settings.

       EasyPermissions.checkDeniedPermissionsNeverAskAgain(this,

               getString(R.string.rationale_ask_again),

                R.string.mine_setting,R.string.cancel, perms);

}

}

0 0
原创粉丝点击