Io gioco con l'anteprima M e testò la mia app su di esso, in particolare la parte "salva un file in una memoria esterna". Prima del download/salvataggio avviato il processo, chiedo perAnteprima Android M: l'attività viene ricreata dopo l'autorizzazione concessa
Manifest.permission.WRITE_EXTERNAL_STORAGE
autorizzazione come descritto nella pagina degli sviluppatori: https://developer.android.com/preview/features/runtime-permissions.html
la finestra di verifica come previsto:
"Allow <AppName> to access photos, media, and files on your device?" Deny/Allow
Se mi ha colpito la " deny "-button, viene chiamato il metodo onRequestPermissionsResult dell'attività.
Se si preme il pulsante "allow", l'attività viene prima ricreata e successivamente viene chiamato il metodo onRequestPermissionsResult. Penso che sia il risultato del permesso concesso.
Ma la seconda situazione è difficile perché voglio innescare un callback che avvia il download, ma questo oggetto è nullo, a questo punto:
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
getLogger().error("onRequestPermissionsResult (" + requestCode + ", " + permissions + ", " + grantResults + ")");
switch (requestCode) {
//permission for saving files?
case PermissionCode.WRITE_EXTERNAL_STORAGE: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//HERE IS THE NULL-OBJECT
if (controller != null) {
controller.triggerCallback();
}
}
break;
}
default: {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
Quindi le mie domande sono:
- Can Evito questa ricreazione?
- Se no, come posso ridisegnare il mio codice per risolvere il problema - Sono totalmente alcun ideale al momento
EDIT 1:
ho cercato di risolvere il problema con un gestore e postDelayed - ma l'ho saltato.
EDIT 2:
ho preliminare risolto e mostrano un brindisi per utente con la richiesta di premere nuovamente il pulsante di download (in caso di autorizzazione concessa). Ma Google: SEI SERIO?
EDIT 3:
No ricreazione accade con l'ultimo SDK 6.0 (Versione 23) - forse qualcuno ha ascoltato il mio pianto a Mountain View :-)
Ehi, come è andata a finire? Sto compilando anche la versione 23, e sto ancora affrontando il riavvio delle attività su permesso di consentire e negare. Il metodo onRequestPermissionsResult non viene mai chiamato. Sto chiamando requestPermissions() da un frammento. Questo fa qualche differenza? –
@Mayur Altro: come revocare/concedere l'autorizzazione? Quando revocando/concedendo le impostazioni delle app interne, ho ancora tempo libero dopo aver ripreso ad app. Ma all'interno del flusso di lavoro dell'app - come descritto sopra - non si verifica alcuna ricreazione ... –
non importa, l'ho risolto. –