2017-05-05 2 views
1

Je développe une application Xamarin.Forms à l'aide du microphone. Mon application utilise Android 7.1 (Nougat) sur un Huawei P9-Phone. Mon manifeste Android comprend:La boîte de dialogue d'autorisation Android ne s'affiche pas dans Xamarin.Forms

La boîte de dialogue d'autorisation ne s'affiche toujours pas si j'essaie d'utiliser le microphone. Je peux définir l'autorisation manuellement dans les paramètres du téléphone (l'application fonctionne si je le fais).

Le code qui donne accès au micro est:

this.recorder = new MediaRecorder(); 

this.recorder.SetAudioSource(AudioSource.Mic); 
this.recorder.SetOutputFormat(OutputFormat.AmrWb); 
this.recorder.SetAudioEncoder(AudioEncoder.AmrWb); 
this.recorder.SetAudioSamplingRate(16000); 

var directoryName = Configuration.RecordDirectory; 

if (!Directory.Exists(directoryName)) 
{ 
    Directory.CreateDirectory(directoryName); 
} 

var fileName = Configuration.RecordName + Configuration.RecordExtension; 
string path = Path.Combine(Configuration.RecordDirectory, fileName); 

this.recorder.SetOutputFile(path); 
this.recorder.Prepare(); 
this.recorder.Start(); 

Qu'est-ce que je manque? Puis-je forcer l'application pendant l'exécution à afficher le dialogue?

Résolu

lecture this blog article, les développeurs doivent mettre en œuvre les demandes d'autorisation manuellement depuis android marshmellow.

+0

s'il vous plaît montrer le code qui tente d'accéder au microphone – Jason

+0

Depuis Android 6.0 vous devez demander les autorisations par programme: https://developer.android.com/training/permissions/requesting.html – Gusman

+0

@jason merci pour votre réponse. J'ai ajouté le code à la question. –

Répondre

0

Depuis Android 6.0 (Marshmallow, SDK> = 23), vous devez demander des autorisations lors de l'exécution. Cela a été introduit pour empêcher l'utilisateur d'avoir à accepter toutes les autorisations lors de l'installation de l'application.

Cet article explique le flux de travail d'autorisation mise à jour: https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/

(Ajouté comme communauté wiki depuis la réponse était déjà prévue dans la question)