Ma è solo un ripasso, e inoltre ho anche i miei appunti.
Vediamo...
Devo fare un overlay e mi servono i permessi.
Intanto diciamo che il problema si pone solo per un'API superiore o uguale a 23, se contemporaneamente il permesso per gli overlay può essere negato. In tutti gli altri casi vale la classica procedura.
if(Build.VERSION.SDK_INT >=23 && !Settings.canDrawOverlays(getApplicationContext())){
}
Ecco, questa è l'eventualità in cui si deve porre una risposta diversa: API da 23 in su e assenza (!) dei permessi System.canDrawOverlays(Context).In questo caso, che dobbiamo fare?
Il codice che viene dopo non mi risulta facilmente comprensibile, come non mi ci era mai risultato nemmeno prima.
Lo vedrò in seguito.
Intanto andiamo avanti.
if (Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(getApplicationContext())) {
Intent i=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:"+getPackageName()));
startActivityForResult(i,0);
}
else{
Intent intent=new Intent(getApplicationContext(),MyService.class);
startService(intent);
}
Praticamente fa la distinzione del caso in cui sia un'API superiore o uguale a 23 con i permessi canDrawOverlay negati e gli altri casi.C'è poi onActivityResult, che riscrivo:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK){
if(Build.VERSION.SDK_INT >= 23 && Settings.canDrawOverlays(getApplicationContext())){
Intent intent=new Intent(getApplicationContext(),MyService.class);
startService(intent);
}
}
}
Dovrebbe funzionare... Speriamo.
E infatti funziona!.
Dovrei farmi diversi Mandala ancora, e comprendere bene il codice.
Nessun commento:
Posta un commento