我正在使用麦克风开发 Xamarin.Forms 应用程序。我的应用在华为 P9 手机上使用 Android 7.1 (Nougat)。我的 android 清单包括:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果我尝试使用麦克风,仍然没有显示权限对话框。我可以在手机设置中手动设置权限(如果我这样做,该应用程序可以工作)。
访问麦克风的代码是:
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();
我错过了什么?
我可以在运行时强制应用程序显示对话框吗?
解决了
阅读这篇博客文章,开发者必须手动实现权限请求,因为 android marshmellow。