android - 无法在 Android 中请求 RECORD_AUDIO 权限
问题描述
我正在开发一个具有自己的录像机功能的 Android 应用程序。为此,我需要向用户请求 RECORD_AUDIO 权限。但是当我请求权限时,它没有显示从用户那里获得权限的提示。
这是我的功能,用于检查应用程序是否需要请求权限,如果需要,它会自动执行。
private boolean isRecordAudioPermissionGranted()
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) ==
PackageManager.PERMISSION_GRANTED) {
// put your code for Version>=Marshmallow
return true;
} else {
if (shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)) {
Toast.makeText(this,
"App required access to audio", Toast.LENGTH_SHORT).show();
}
requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO
},AUDIO_RECORD_REQUEST_CODE);
return false;
}
} else {
// put your code for Version < Marshmallow
return true;
}
}
在Activity的onCreate中,我是这样调用函数的。
if(!isRecordAudioPermissionGranted())
{
Toast.makeText(getApplicationContext(), "Need to request permission", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "No need to request permission", Toast.LENGTH_SHORT).show();
}
该应用程序说它需要请求权限,但它只是没有提示请求权限对话框。我的代码有什么问题?
这是我在清单文件中添加和使用的权限。
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.Manifest.permission.RECORD_AUDIO"/>
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-feature android:name="android.hardware.camera.front"/>
<uses-feature android:name="android.hardware.camera.front.autofocus"/>
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/>
<uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/>
<uses-feature android:name="android.software.vr.mode" android:required="true"/>
<uses-feature android:name="android.hardware.vr.high_performance" android:required="true"/>
解决方案
对于RECORD_AUDIO 权限,正确的权限字符串是
android.permission.RECORD_AUDIO
在您的清单中,您正在使用
<uses-permission android:name="android.Manifest.permission.RECORD_AUDIO"/>
这是不正确的,它必须是
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
推荐阅读
- amazon-web-services - 为什么附加到 IAM 用户的此策略不起作用
- c# - 从另一个对象/类型调用成员方法,就好像它们属于该对象/类型一样
- python - python中表示的常见时间格式
- c# - 如何将字符串属性传递给 WCF 并返回数据集?
- angular - 为什么我的项目会导致“在此元素上匹配多个组件”。错误?
- raku - 遍历字符串 (UAX #29)
- go - 在循环中执行一个 goroutine 并将值传递给另一个包中的变量
- c# - System.IO.FileNotFoundException 有神秘的正斜杠
- java - %~dp0 在名称中有空格的文件夹下使用时不起作用
- c - 如何计算 ls 多列显示所需的列宽?