studio permission descargar android android-support-library android-permissions android-6.0-marshmallow

descargar - La llamada requiere el nivel de API 23(el mínimo actual es 14): android.app.Activity#requestPermissions, checkSelfPermission



download android 6.0 marshmallow (5)

Esta pregunta ya tiene una respuesta aquí:

Estoy tratando de agregar permisos de tiempo de ejecución android (6.0.1) API 23, si uso la versión SDK (tanto la versión mínima como la final 23 ) funciona bien, como a continuación,

<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" />

Si cambio android: minSdkVersion (menos de 23)

Por ejemplo:

Estoy recibiendo error a continuación:

La llamada requiere el nivel de API 23 (el min actual es 14): android.app.Activity # requestPermissions, checkSelfPermission

Para los siguientes 2 métodos,

1)requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS) 2)checkSelfPermission(permission)

Intenté ActivityCompat.checkSelfPermission() y ContextCompat.checkSelfPermission() ambos no funcionan.

Lo que me faltaba no pude entender ..


Compruebe el objetivo> = 23 o simplemente agregue debajo de la línea sobre su método

@TargetApi(Build.VERSION_CODES.M)

Por ejemplo, si está comprobando los permisos de almacenamiento, puede consultar esta función,

@TargetApi(Build.VERSION_CODES.M) public boolean CheckStoragePermission() { int permissionCheckRead = ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE); if (permissionCheckRead != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) { // Show an expanation to the user *asynchronously* -- don''t block // this thread waiting for the user''s response! After the user // sees the explanation, try again to request the permission. ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, Define.PERMISSION_STORAGE); } else { // No explanation needed, we can request the permission. ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, Define.PERMISSION_STORAGE); // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an // app-defined int constant. The callback method gets the // result of the request. } return false; } else return true; }


Esto se debe a que checkSelfPermission() se agregó en la API 23 . Así que tendrás que codificar condicionalmente como:

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){ //use checkSelfPermission() } else { //simply use the required feature //as the user has already granted permission to them during installation }


Verifique el dispositivo SDK antes de llamar al permiso de solicitud.

if(Build.VERSION.SDK_INT==Build.VERSION_CODES.M) { //call the request permission here }


prueba de esta manera

if (Build.VERSION.SDK_INT < 23) { // your code } else { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) { requestContactsPermissions1(); } else { // your code } }

EDITADO:

Agregue el bloque de dependencias en el nivel inferior (su aplicación) build.gradle :

compile ''com.android.support:appcompat-v7:23.1.1''

o agregue a continuación solo si necesita soporte de diseño lib

compile ''com.android.support:design:23.1.1''

usa uno de los anteriores


Compruebe los permisos:

ContextCompat.checkSelfPermission(Context context, String permission)

Solicitar permisos:

ActivityCompat.requestPermissions(Activity activity, String[] permissions, int requestCode)

o dentro de un Fragment soporte v4

requestPermissions(String[] permissions, int requestCode)