Android-許可權封裝
阿新 • • 發佈:2018-11-22
package kcl.com.fqinqin.utils; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * Created by hyman for imooc.com. */ public class PermissionUtils { private Activity mActivity; private int mReqCode; private CallBack mCallBack; public static interface CallBack { void grantAll(); void denied(); } public PermissionUtils(Activity activity) { mActivity = activity; } @RequiresApi(api = Build.VERSION_CODES.M) public void request(List<String> needPermissions, int reqCode, CallBack callback) { if (Build.VERSION.SDK_INT < 23) { callback.grantAll(); return; } if (mActivity == null) { throw new IllegalArgumentException("activity is null."); } mReqCode = reqCode; mCallBack = callback; List<String> reqPermissions = new ArrayList<>(); for (String permission : needPermissions) { if (mActivity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { reqPermissions.add(permission); } } // fixed!!! if (reqPermissions.isEmpty()) { callback.grantAll(); return; } mActivity.requestPermissions(reqPermissions.toArray(new String[]{}), reqCode); } public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == mReqCode) { boolean grantAll = true; for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] != PackageManager.PERMISSION_GRANTED) { grantAll = false; Toast.makeText(mActivity, permissions[i] + " 未授權", Toast.LENGTH_SHORT).show(); break; } } if (grantAll) { mCallBack.grantAll(); } else { mCallBack.denied(); } } } }