【问题标题】:CAPTURE_AUDIO_OUTPUT not asked for permission at runtimeCAPTURE_AUDIO_OUTPUT 在运行时未请求许可
【发布时间】:2018-02-03 11:57:18
【问题描述】:

我试图从录音机录制声音,但在 android 6+ 上我得到权限错误。 我添加了询问权限的代码(有 3 个询问权限)2 工作但 CAPTURE_AUDIO_OUTPUT 显示错误。它只是不要求我授予许可。在日志中它只是“未授予” 有谁知道是什么问题?

 public static boolean PermissionCheck(Activity context, String permission, int code) {
        boolean state = false;
        int permissionCheck = ContextCompat.checkSelfPermission(context,
                permission);
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(context, new String[]{permission}, code); // define this constant yourself
        } else {
            // you have the permission
            return true;
        }
        return state;
    }

case CAPTURE_AUDIO_OUTPUT_CONSTANT: {
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    Logger.e("CAPTURE PERMISSION GRANTED");
                    INIT();
                } else {
                    Logger.e("CAPTURE PERMISSION NOT GRANTED");
                    finish();
                }
                return;
            }

错误

W/PackageManager: Not granting permission android.permission.CAPTURE_AUDIO_OUTPUT to package blabla_package (protectionLevel=18 flags=0x3848be46)

在清单中

<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>

[UPD] 经过大量的尝试和研究,我现在可以回答: 感谢谷歌,现在我们无法记录通话。 只有使用 C 代码和 NDK 才有可能。

【问题讨论】:

  • @Hetfieldan24 我在清单中有一行
  • 您实施了 NDK 吗?是不是两个声音都录了?
  • @Heena 是的,已实现。它的唯一记录麦克风。应该以某种方式避免这种情况..但我不知道如何,没有 NDK 经验
  • @Peter 可以使用 NDK 到 Android 9(不包括)。这就是为什么你会看到许多通话录音应用程序无法在 Android 9 上录音的原因。现在它变得越来越不可能了。也许通过root是可能的,但仍然很难。如果您知道如何通过 root 执行此操作(并且没有将应用程序作为系统应用程序),请告诉我。
  • @androiddeveloper 我留下了这个想法。不合法

标签: java android audio output record


【解决方案1】:

CAPTURE_AUDIO_OUTPUT 不是dangerous 权限,因此不适用于运行时权限系统。 CAPTURE_AUDIO_OUTPUT 具有 android:protectionLevel="signature|privileged",因此它只能由安装在特权(也称为系统)分区上或由平台签名密钥签名的应用程序持有。

【讨论】:

  • 我如何在 6+ 上录制声音?只需将签名密钥添加到应用程序?
  • @Peter:CAPTURE_AUDIO_OUTPUT 不适用于使用麦克风录制声音。那是RECORD_AUDIO 权限。
  • @androiddeveloper:因为它是privileged,所以在有根设备上,您应该能够将应用程序移动到特权分区并以这种方式获得权限。不过,我不知道所有细节,因为根场景不是我的专业领域。
  • @androiddeveloper:我不知道,对不起。
  • @androiddeveloper:“系统应用程序会自动获得此权限,对吧?” - 仅当他们在清单中要求时。关于你的其他问题,我不知道,对不起。我从许可行为的角度来接近这个答案;我没有亲自使用过这个权限。
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 2017-11-24
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多