public LocationController(Context context) { this.context = context; if (Build.VERSION.SDK_INT>=23) { if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Log.e(TAG, "LocationController: location permission denied!!!"); ((AppCompatActivity) context).requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, LOCATION_PERMISSION_REQUEST_CODE); return; } } this.locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); this.locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME_FOR_UPDATE, MIN_DISTANCE_UPDATE, this); }
@TargetApi(Build.VERSION_CODES.M) private void checkForPermission() { if (thisActivity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (thisActivity.shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) { Toast.makeText(thisActivity, "Read Permission is necessary to transfer", Toast.LENGTH_LONG).show(); } else { thisActivity.requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); //2 is integer constant for WRITE_EXTERNAL_STORAGE permission, uses in onRequestPermissionResult } } }
public boolean checkAppCompatPermissions(AppCompatActivity activity) { if(mPermissions == null) throw new RuntimeException("String[] permissions is null, please call setRequestedPermissions!"); //if it has the permissions, don't wait for async callback and //just return true so apps can continue as normal if(hasSelfPermission(activity, mPermissions) && getParent() != null) { getParent().onPermissionsSatisfied(); return true; } else { activity.requestPermissions(mPermissions, PERMISSION_REQUEST_CODE); } return false; }