package com.loginmodule; import android.Manifest; import android.content.DialogInterface; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.WindowManager; import com.yanzhenjie.permission.AndPermission; import com.yanzhenjie.permission.PermissionNo; import com.yanzhenjie.permission.PermissionYes; import com.yanzhenjie.permission.Rationale; import com.yanzhenjie.permission.RationaleListener; import java.util.List; /** * Created by yangc on 2017/4/5. * E-Mail:yangchaojiang@outlook.com * Deprecated: 默认加载页 */ public abstract class LoadActivity extends AppCompatActivity { private static final int REQUEST_CODE_PERMISSION_OTHER = 101; private static final int REQUEST_CODE_SETTING = 300; // public String[] pre = {Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE, // Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE, Manifest.permission.CALL_PHONE}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); cameraTask(); } /**** * 已经获取权限可以开始业务 ***/ protected abstract void startApp(); /*** * 重写该方法赋予想要权限 ***/ protected abstract String[] permission(); /**** * 权限适配 ***/ public void cameraTask() { if (Build.VERSION.SDK_INT >= 23) { requestPermission(); } else { //实现业务处理 startApp(); } } @PermissionYes(REQUEST_CODE_PERMISSION_OTHER) private void getMultiYes(List<String> grantedPermissions) { //已经获取权限可以业务 startApp(); } @PermissionNo(REQUEST_CODE_PERMISSION_OTHER) private void getMultiNo(List<String> deniedPermissions) { // 用户否勾选了不再提示并且拒绝了权限,那么提示用户到设置中授权。 if (AndPermission.hasAlwaysDeniedPermission(this, deniedPermissions)) { AndPermission.defaultSettingDialog(this, REQUEST_CODE_SETTING) .setTitle(R.string.title_dialog) .setMessage(R.string.rationale_ask_again) .setPositiveButton(R.string.title_settings_dialog) .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }) .show(); // 更多自定dialog,请看上面。 } else { // 用户否不勾选了不再提示并且拒绝了权限,那么提示用户到设置中授权。 requestPermission(); } } //----------------------------------权限回调处理----------------------------------// @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); /** * 转给AndPermission分析结果。 * * @param object 要接受结果的Activity、Fragment。 * @param requestCode 请求码。 * @param permissions 权限数组,一个或者多个。 * @param grantResults 请求结果。 */ AndPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults); } @Override protected void onActivityResult(int requestCode2, int resultCode, Intent data) { switch (requestCode2) { case REQUEST_CODE_SETTING: { requestPermission(); break; } } } /** * 请求权限 ***/ private void requestPermission() { AndPermission.with(this) .requestCode(REQUEST_CODE_PERMISSION_OTHER) .permission(permission()) // rationale作用是:用户拒绝一次权限,再次申请时先征求用户同意,再打开授权对话框,避免用户勾选不再提示。 .rationale(new RationaleListener() { @Override public void showRequestPermissionRationale(int requestCode, Rationale rationale) { AndPermission.rationaleDialog(LoadActivity.this, rationale).show(); } }) .send(); } }