在Android M上请求麦克风权限

8

我需要在Android M上使用麦克风。我已经尝试在清单文件中设置权限组,但无法正常工作。以下是我的清单文件内容:

<permission-group android:name="android.permission-group.MICROPHONE"
    android:label="label"
    android:icon="@mipmap/day_icon"
    android:priority="360"/>

<permission android:name="android.permission.MICROPHONE"
    android:permissionGroup="android.permission-group.MICROPHONE"
    android:protectionLevel="dangerous"
    android:label="label" />

我也尝试通过代码获取访问权限:

if (ContextCompat.checkSelfPermission(getActivity(),
            Manifest.permission_group.MICROPHONE)
            != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(getActivity(),
                new String[]{Manifest.permission_group.MICROPHONE},
                REQUEST_MICROPHONE);

    }

警告框没有显示来授权访问。

我仍然无法访问麦克风。有人知道如何获取麦克风的权限吗?

注意:这仅适用于Android M。


2
它是Manifest.permission.RECORD_AUDIO - DeeV
@tyczj 主要我只是在尝试启用麦克风。 - coder
3
<permission><permission-group>标签用于创建权限。你需要的是<uses-permission android:name="android.permission.RECORD_AUDIO" /> - DeeV
正如 @DeeV 所说,你正在创建自己的权限,你所要做的就是用 uses-permission 列出该权限即可。 - tyczj
这只发生在 API 级别为 23 的情况下失败。 - coder
显示剩余5条评论
1个回答

30

如果你想请求麦克风权限,应该请求Manifest.permission.RECORD_AUDIO而不是权限组Manifest.permission_group.MICROPHONE

因此,在清单文件中删除<permission/><permission-group/>标签,因为它们用于指示你要创建新的权限,而不是使用现有权限。

然后,只需执行以下操作即可请求权限:

if (ContextCompat.checkSelfPermission(getActivity(),
        Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {

    ActivityCompat.requestPermissions(getActivity(),
            new String[]{Manifest.permission.RECORD_AUDIO},
            REQUEST_MICROPHONE);

}

1
为什么**记录音频(RECORD_AUDIO)权限比麦克风(MICROPHONE)**组更可靠? - IgorGanapolsky
2
@IgorGanapolsky:由于某些原因,您无法请求整个组,因此您确实没有选择。 - DeeV
2
@BhavyaArora REQUEST_MICROPHONE 是您提供的请求代码。您将在 onActivityResult 中获得结果。 - DeeV
1
相关文档页面链接:https://developer.android.com/training/permissions/requesting#java - Alex Totheroh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接