package com.forfan.bigbang.component.base; import android.content.Intent; import android.support.annotation.NonNull; import android.text.Html; import com.forfan.bigbang.R; import com.forfan.bigbang.util.EasyPermissions; import com.trello.rxlifecycle.components.support.RxAppCompatActivity; import java.util.List; /* * @创建者 Jrking * @创建时间 2016/4/15 16:18 * @描述 ${Activity基类 } * @更新描述 ${适配6.0权限问题} */ public class PermissionActivity extends RxAppCompatActivity implements EasyPermissions.PermissionCallbacks { protected static final int RC_PERM = 123; protected static int reSting = R.string.ask_again;//默认提示语句 /** * 权限回调接口 */ private CheckPermListener mListener; public interface CheckPermListener { //权限通过后的回调方法 void grantPermission(); void denyPermission(); } public void checkPermission(CheckPermListener listener, int resString, String... mPerms) { mListener = listener; if (EasyPermissions.hasPermissions(this, mPerms)) { if (mListener != null) mListener.grantPermission(); } else { CharSequence text= Html.fromHtml("<font color=\"#000000\">"+getString(resString)+"</font>"); EasyPermissions.requestPermissions(this, text, RC_PERM, mPerms); } } /** * 用户权限处理, * 如果全部获取, 则直接过. * 如果权限缺失, 则提示Dialog. * * @param requestCode 请求码 * @param permissions 权限 * @param grantResults 结果 */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == EasyPermissions.SETTINGS_REQ_CODE) { //设置返回 } } @Override public void onPermissionsGranted(int requestCode, List<String> perms) { //同意了某些权限可能不是全部 if (mListener != null) mListener.denyPermission(); } @Override public void onPermissionsAllGranted() { if (mListener != null) mListener.grantPermission();//同意了全部权限的回调 } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { if(!EasyPermissions.checkDeniedPermissionsNeverAskAgain(this, getString(R.string.perm_tip), R.string.setting, R.string.cancel, null, perms)){ if (mListener != null) mListener.denyPermission(); } } }