public class Permission { private String[] permission = {Manifest.permission.CAMERA,Manifest.permission.ACCESS_FINE_LOCATION}; private List<String> permissionList = new ArrayList<>(); public int REQUEST_CODE = 100; public void checkPermission(Activity activity){ if(Build.VERSION.SDK_INT>Build.VERSION_CODES.M){ for (int i = 0; i < permission.length; i++) { if(ContextCompat.checkSelfPermission(activity,permission[i])!= PackageManager.PERMISSION_GRANTED){ permissionList.add(permission[i]); } } if(permissionList.size()>0){ requestPermission(activity); } } } public void requestPermission(Activity activity){ ActivityCompat.requestPermissions(activity,permissionList.toArray(new String[permissionList.size()]),REQUEST_CODE); } }
activity里调用
public class MainActivity extends AppCompatActivity { Permission permission; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); permission = new Permission(); permission.checkPermission(this); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if(requestCode==permission.REQUEST_CODE){ for (int i = 0; i < grantResults.length; i++) { if(grantResults[i]!= PackageManager.PERMISSION_GRANTED){ Log.e("permission",permissions[i]+"not"); Log.e("permission",grantResults[i]+"not"); }else{ Log.e("permission",permissions[i]+"yes"); Log.e("permission",grantResults[i]+"yes"); } } } }