package com.pandaq.pandaeye; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; import android.widget.Toast; /** * Created by PandaQ on 2016/9/8. * email : 767807368@qq.com * 所有Activity的基类 */ public class BaseActivity extends AppCompatActivity { //静态变量,在 PicassoTarget 中修改 status 颜色时也动态修改 public static int currentStatusColor; private final int permissionRequestCode = 110; private PermissionCall mPermissionCall; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected void onRestart() { super.onRestart(); } @Override protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onDestroy() { super.onDestroy(); } /** * @param errorMsg 提示信息 * @param LENGTH 提示显示时长(Snackbar.SHORT or SnackBar.LONG) * @param action 按钮文字 * @param onClickListener 按钮点击事件 */ public void showSnackBar(View mContainer, String errorMsg, int LENGTH, String action, View.OnClickListener onClickListener) { Snackbar lSnackbar = null; lSnackbar = Snackbar.make(mContainer, errorMsg, LENGTH).setAction(action, onClickListener); View lView = lSnackbar.getView(); // TextView snackText = (TextView) lView.findViewById(R.id.snackbar_text); TextView snackAction = (TextView) lView.findViewById(R.id.snackbar_action); snackAction.setTextColor(getResources().getColor(R.color.white_FFFFFF)); // //对两个控件进行自定义设置 lView.setBackgroundColor(getResources().getColor(R.color.black_414040)); lSnackbar.show(); } /** * @param errorMsg 提示信息 * @param LENGTH 提示显示时长(Snackbar.SHORT or SnackBar.LONG) */ public void showSnackBar(View mContainer, String errorMsg, int LENGTH) { Snackbar lSnackbar = null; lSnackbar = Snackbar.make(mContainer, errorMsg, LENGTH); View lView = lSnackbar.getView(); // //对两个控件进行自定义设置 lView.setBackgroundColor(getResources().getColor(R.color.black_414040)); lSnackbar.show(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } public void showShortToast(Context context, String msg) { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } public void showLongToast(Context context, String msg) { Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } /* 处理权限问题*/ /** * 对子类提供的申请权限方法 * * @param permissions 申请的权限 */ public void requestRunTimePermissions(String[] permissions, PermissionCall call) { if (permissions == null || permissions.length == 0) return; mPermissionCall = call; if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.M) || checkPermissionGranted(permissions)) { //提示已经拥有权限 mPermissionCall.requestSuccess(); } else { //申请权限 requestPermission(permissions, permissionRequestCode); } } public boolean checkPermissionGranted(String... permissions) { boolean result = true; for (String p : permissions) { if (ActivityCompat.checkSelfPermission(this, p) != PackageManager.PERMISSION_GRANTED) { result = false; break; } } return result; } private boolean shouldShowRequestPermissionRationale(String[] permissions) { boolean flag = false; for (String p : permissions) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, p)) { flag = true; break; } } return flag; } private void requestPermission(final String[] permissions, final int requestCode) { if (shouldShowRequestPermissionRationale(permissions)) { new AlertDialog.Builder(this) .setTitle(R.string.attention) .setMessage(R.string.content_to_request_permission) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions(BaseActivity.this, permissions, requestCode); } }).show(); } else { ActivityCompat.requestPermissions(this, permissions, permissionRequestCode); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == permissionRequestCode) { if (verifyPermissions(grantResults)) { mPermissionCall.requestSuccess(); mPermissionCall = null; } else { mPermissionCall.refused(); mPermissionCall = null; } } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } public boolean verifyPermissions(int[] grantResults) { // At least one result must be checked. if (grantResults.length < 1) { return false; } // Verify that each required permission has been granted, otherwise return false. for (int result : grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { return false; } } return true; } public interface PermissionCall { //申请成功 void requestSuccess(); //拒绝 void refused(); } }