Androidのパーミッション要求フレームZcxPremission

ZcxPremission

ZcxPremissionを達成することは容易にAspectJに基づく許可フレームワークを要求するには、あなたは注釈を使用する許可を要求することができます。
NeedPermissionアクティビティを使用すると、すべてのクラスのメソッドの使用をサポートし、操作権限の前に提供され、プロセスの権限(パーミッションが思い出さ拒否されたかどうか)などが挙げられます。

クラスを使用するには:

  1. ZcxPermission:初期化のためのクラス
  2. @NeedPermission:注釈リクエスト許可パラメータと、法及び活動クラスの任意のタイプに適用することができます。
    • 値:許可が要求されます
    • requestCode:要求コード
    • isAllowExecution:許可が継続するかどうかを拒否
    • requestBeforeは:メソッド呼び出し要求の前に、利用@PermissionBeforeで、PermissionBefore注釈付き同じパラメータを持つメソッドを呼び出します
    • permissionCanceled:メソッドを使用してリクエストメソッドをキャンセルする、及び@PermissionCanceledは、同じパラメータがアノテートされると呼び出しPermissionCanceled
    • permissionDenied:同じパラメータがpermissionDenied注釈を付けているとメソッドを使用して拒否されたリクエストメソッド、および@permissionDeniedコール
  3. @PermissionBefore:要求の許可は、操作の前に、パラメータ注釈付きメソッドのみPermissionBeforeBeanすることができ、このクラスおよびリクエスト許可クラス構成で使用することができる
    requestBeforeを照合することによって、NeedPermissionと組み合わせて、
  4. @PermissionCanceled:許可が取り消されたときに呼び出されるメソッドは、(ユーザーがクリックする権限が禁止されている)、このクラスのクラス設定要求許可で使用することができる
    permissionCanceledを照合することによって、Neddpermissionと組み合わせて、本方法は、唯一PermissionCanceledBeanことができる注釈されるパラメータ
  5. @PermissionDenied:許可が取り消されたときに呼び出されるメソッドは、(ユーザー権限を要求し、禁止ダニを禁止してクリックしない)、このクラスで使用することができるとのクラスコンフィギュレーション要求許可
    、注釈付きメソッドのパラメータは、唯一PermissionDeniedBeanすることができNeddpermissionとの組み合わせで、permissionDeniedを照合することによって

使用

OnCreate関数初期化するZcxPermission.getInstanceにおけるアプリケーションのメソッド()。初期化()、その後、方法での許可が必要です
ZcxPermissionConfigクラスは、統一戦線の操作権を設定するには、操作をキャンセルし、公共の拒否の操作方法に使用されます。

  public void onCreate() {
        super.onCreate();
        ZcxPermission.getInstance().init(getApplicationContext(),new ZcxPermissionConfig());//ZcxPermissionConfig如果不用可设置为null
}

メソッドのアノテーションを使用しました:

@NeedPermission(value = {Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE},
            requestBefore = Manifest.permission.CAMERA,permissionCanceled = Manifest.permission.CAMERA,
            permissionDenied = Manifest.permission.CAMERA,isAllowExecution = true)
    private void onClickContacts() {
        FragmentManager fragmentManager = getFragmentManager();
        Fragment cameraFragment = fragmentManager.findFragmentByTag("camera");
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        if (cameraFragment ==null) {
            fragmentTransaction.replace(R.id.sample_content_fragment, CameraPreviewFragment.newInstance(), "camera")
                    .addToBackStack("camera")
                    .commitAllowingStateLoss();
        }else {
            fragmentTransaction.show(cameraFragment);
        }
    }

活動のアノテーションを使用しました:

@NeedPermission(value = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE},
        requestBefore = Manifest.permission.CAMERA, permissionCanceled = Manifest.permission.CAMERA,
        permissionDenied = Manifest.permission.CAMERA, isAllowExecution = true)
public class CameraActivity extends Activity implements PermissionListener {

    @Override
    public void onPermissionGranted() {
        mHasPermission =true;
        initCamera();
    }

    @Override
    public void onPermissionCanceled(PermissionCanceledBean bean) {

    }

    @Override
    public void onPermissionDenied(PermissionDeniedBean bean) {

    }

    @PermissionBefore
    public void before(final PermissionBeforeBean beforeBean){
        new android.support.v7.app.AlertDialog.Builder(this)
                .setTitle("我们需要相机权限来正常拍照")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        beforeBean.proceed(true);
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        beforeBean.proceed(false);
                    }
                })
                .show();
    }

次のようにZcxPermissionConfigを使用しました:

public    class ZcxPermissionConfig   {

    @PermissionBefore(Manifest.permission.CAMERA)//该注解注解的方法参数只能是PermissionBeforeBean
    public void before(final PermissionBeforeBean beforeBean){
        new android.support.v7.app.AlertDialog.Builder(beforeBean.getContext())
                .setTitle("来自配置文件,我们需要相机权限来正常拍照")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        beforeBean.proceed(true);//必须调用这个方法,确保正常往下执行
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        beforeBean.proceed(false);//必须调用这个方法,确保正常往下执行
                    }
                })
                .show();
    }

    @PermissionCanceled(Manifest.permission.CAMERA)//该注解注解的方法参数只能是PermissionCanceledBean
    public void cancel(final PermissionCanceledBean canceledBean){
        new android.support.v7.app.AlertDialog.Builder(canceledBean.getContext())
                .setTitle("来自配置文件,我们需要相机权限,请同意")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        canceledBean.againRequest();//调用该方法重试请求
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })
                .show();
    }

    @PermissionDenied(Manifest.permission.CAMERA)//该注解注解的方法参数只能是PermissionDeniedBean
    public void denied(final PermissionDeniedBean deniedBean){
        new android.support.v7.app.AlertDialog.Builder(deniedBean.getContext())
                .setTitle("来自配置文件,我们需要权限,是否设置")
                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        deniedBean.toSettingActivity();//打开设置界面设置权限
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                })
                .show();
    }

}

あなたは特別なニーズを持っている場合はもちろん、直接ツールPermissionUtilsを使用することができます

PermissionUtils.requestPermissions(context, permissions, requestCode, new PermissionListener() {
            @Override
            public void onPermissionGranted() {
               
            }

            @Override
            public void onPermissionCanceled(PermissionCanceledBean bean) {
                
            }

            @Override
            public void onPermissionDenied(PermissionDeniedBean bean) {
                
            }
        });

頼ります

build.gradleあなたのルートディレクトリにプロファイルを追加1.0.1:ZcxAspectj:com.github.xiaoXiangGuoを次のように:

buildscript {
 
    repositories {
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'com.github.xiaoXiangGuo:ZcxAspectj:1.0.1'
    }
}
allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

そして、プラグインを使用して、アプリのbuild.gradleに依存しています

apply plugin: 'com.android.application'
apply plugin: 'zcx-aspectj-plugin'
dependencies {
    implementation 'com.github.xiaoXiangGuo:ZcxPremission:1.0.1'
}

プロジェクトアドレスします。https://github.com/xiaoXiangGuo/ZcxPremissionの
ようこそ

おすすめ

転載: www.cnblogs.com/xiaoXiangGuo/p/11684671.html