使用 install4j 打包时 Java 应用程序不从麦克风录音

问题描述 投票:0回答:1

我有一个 Java 应用程序,它使用 Java 声音 API 来录制系统麦克风的声音。当从终端在 macOS 上运行时,录音按预期工作,但使用 install4j 打包应用程序时不会录制声音。

我使用 Liberica JDK 17 作为运行时。

在Install4J中,我使用这样的权利文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.security.device.audio-input</key>
    <true/>
    <key>com.apple.security.device.microphone</key>
    <true/>
  </dict>
</plist>

当使用 java -jar 从终端运行时,应用程序请求麦克风访问权限。当通过Install4打包并运行时,不需要权限请求。

该应用程序已使用证书正确签名/公证。

有什么想法我可能会错过吗?

谢谢!

java macos audio install4j microphone
1个回答
0
投票

权利文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.device.audio-input</key>
    <true/>
</dict>

足以请求麦克风权限。不过,在您第一次开始录制时,操作系统仍会请求特定权限。如果问题被拒绝,则不会再次显示。

要在 macOS 上重置麦克风权限请求,以便系统在之前被拒绝后再次请求麦克风访问权限,您需要使用

重置应用程序的权限
tccutil reset Microphone <bundle ID>

您可以在应用程序包的

Contents/Info.plist
文件中找到包 ID,它包含在
CFBundleIdentifier
键的值中。

© www.soinside.com 2019 - 2024. All rights reserved.