Comprobar los permisos de Android en un método

Aquí está mi código y funciona perfectamente bien .

if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED || ActivityCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { mMap.setMyLocationEnabled(true); } 

Pero no me gusta un código tan grande en cada cheque, y quiero delegarlo a un método en mi clase de utilidad.

 if (Utils.hasMapLocationPermissions(getActivity())) { mMap.setMyLocationEnabled(true); } 

Pero setMyLocationEnabled tiene anotación @RequiresPermission Y por lo tanto no puedo delegar a un método, porque pelusa y editor lo muestra como un error .

¿Hay alguna anotación para escribir en mi método de utilidad y suprimir la pelusa?

Algo como esto

 @ChecksPermission public boolean hasMapLocationPermissions(Activity activity) { return // my checking logic.. } 

Puede cambiar el nombre de su método como checkLocationPermission(Activity activity) . He descubierto que el nombre de su método debe comenzar con "check" y terminar con "Permiso" para pasar las advertencias de Lint.

Por ejemplo:

 public static boolean checkLocationPermission(Context context) { return ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED; } 

Puede suprimir este error en el editor y en los informes de pelusa anotando su método con @SuppressWarnings("MissingPermission") , o puede suprimir el error de una sola sentencia poniendo //noinspection MissingPermission encima de esa línea.

Por ejemplo:

 @SuppressWarnings("MissingPermission") public boolean hasMapLocationPermissions(Activity activity) { // your checking logic } 

O:

 if (Utils.hasMapLocationPermissions(getActivity())) { //noinspection MissingPermission mMap.setMyLocationEnabled(true); } 

Lo que he hecho es crear una clase y dentro de ella hacer un constructor como se muestra a continuación:

 public MarshMallowPermission(Activity activity) { this.activity = activity; } public boolean checkPermissionForRecord() { int result = ContextCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO); if (result == PackageManager.PERMISSION_GRANTED) { return true; } else { return false; } } 

Entonces dentro de tu clase llama a tus funciones como

  if (!marshMallowPermission.checkPermissionForRecord()) { marshMallowPermission.requestPermissionForRecord(); } 

Y antes de llamar a la función dentro de tu clase haz esto

 MarshMallowPermission marshMallowPermission = new MarshMallowPermission(getActivity()); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.