package com.aop; import android.content.DialogInterface; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import com.App; import com.app.annotation.aspect.Permission; import com.base.util.MPermissionUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; /** * Created by baixiaokang on 17/1/31. * 申请系统权限切片,根据注解值申请所需运行权限 */ @Aspect public class SysPermissionAspect { @Around("execution(@com.app.annotation.aspect.Permission * *(..)) && @annotation(permission)") public void aroundJoinPoint(ProceedingJoinPoint joinPoint, Permission permission) throws Throwable { AppCompatActivity ac = (AppCompatActivity) App.getAppContext().getCurActivity(); new AlertDialog.Builder(ac) .setTitle("提示") .setMessage("为了应用可以正常使用,请您点击确认申请权限。") .setNegativeButton("取消", null) .setPositiveButton("允许", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MPermissionUtils.requestPermissionsResult(ac, 1, permission.value() , new MPermissionUtils.OnPermissionListener() { @Override public void onPermissionGranted() { try { joinPoint.proceed();//获得权限,执行原方法 } catch (Throwable e) { e.printStackTrace(); } } @Override public void onPermissionDenied() { MPermissionUtils.showTipsDialog(ac); } }); } }) .create() .show(); } }