2015-10-05 11 views

risposta

19

No, non è possibile personalizzare il testo della finestra di dialogo, ma è possibile fornire una spiegazione prima di richiedere l'autorizzazione. Citando developer.android.com:

richiedere le autorizzazioni

Se la vostra applicazione ha bisogno di un permesso di pericoloso che è stato elencato in app manifesta, si deve chiedere all'utente di concedere l'autorizzazione. Android fornisce diversi metodi che è possibile utilizzare per richiedere un'autorizzazione. Chiamando lo questi metodi fa apparire una finestra di dialogo standard di Android, che non è possibile personalizzare con lo .

spiegare perché l'applicazione ha bisogno di autorizzazioni

In alcune circostanze, si potrebbe desiderare di aiutare l'utente a capire perché la vostra applicazione ha bisogno di un permesso. Ad esempio, se un utente avvia un'applicazione di fotografia , l'utente probabilmente non sarà sorpreso dal fatto che l'app richieda il permesso di utilizzare la fotocamera, ma l'utente potrebbe non sapere perché l'app vuole accedere alla posizione dell'utente o contatti. Prima di richiedere un'autorizzazione, è necessario considerare fornendo una spiegazione all'utente. Tieni presente che non vuoi che sommerga l'utente con spiegazioni; se fornisci troppe spiegazioni , l'utente potrebbe trovare frustrante l'app e rimuoverla.

Un approccio che è possibile utilizzare è fornire una spiegazione solo se l'utente ha già rifiutato tale richiesta di autorizzazione. Se un utente mantiene cercando di utilizzare funzionalità che richiedono un'autorizzazione, ma mantiene rifiutando la richiesta di autorizzazione, probabilmente mostra che l'utente non capisce perché l'app ha bisogno dell'autorizzazione per fornire la funzionalità . In una situazione del genere, è probabilmente una buona idea per mostrare una spiegazione.

Per facilitare la ricerca di situazioni in cui l'utente potrebbe aver bisogno di una spiegazione, Android fornisce un metodo di utilità, shouldShowRequestPermissionRationale(). Questo metodo restituisce true se l'app ha richiesto questa autorizzazione in precedenza e l'utente ha rifiutato la richiesta .

9

Non possiamo personalizzare dialogo autorizzazione richiesta, ma siamo in grado di fornire all'utente una spiegazione personalizzata che per questo che chiediamo qui di seguito è il metodo con spiegazione personalizzato

private void checkForCameraPermission() { 
    // Here, thisActivity is the current activity 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.CAMERA) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) { 
      AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this); 
      alertBuilder.setCancelable(true); 
      alertBuilder.setTitle("Camera permission necessary"); 
      alertBuilder.setMessage("FITsociety need camera permission to read barcode."); 
      alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        ActivityCompat.requestPermissions(BarCodeScannerActivity.this, 
          new String[]{Manifest.permission.CAMERA}, 
          MY_PERMISSIONS_REQUEST_CAMERA); 
       } 
      }); 

      AlertDialog alert = alertBuilder.create(); 
      alert.show(); 
     } else { 
      // No explanation needed, we can request the permission. 
      ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.CAMERA}, 
        MY_PERMISSIONS_REQUEST_CAMERA); 
      // MY_PERMISSIONS_REQUEST_CAMERA is an 
      // app-defined int constant. The callback method gets the 
      // result of the request. 
     } 
    } else { 
     setBarCodeScannerView(); 
    } 
} 

il metodo di cui sopra verificare se il permesso è già concessa, se non allora controllare se spiegazione personalizzato è richiesto con questo metodo

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) 

la documentazione per questo metodo è qui shouldShowRequestPermissionRationale() questo metodo ritorno vero solo se l'utente rifiuta la finestra di dialogo di autorizzazione o l'utente chiude l'autorizzazione dall'impostazione dell'applicazione se l'utente lo ha fatto, mostra la finestra di avviso con la spiegazione personalizzata e continua a sperare che funzioni

Problemi correlati