java.lang.SecurityException:方法 class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不可用

java.lang.SecurityException: Method class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] not available

调用 Camera.open(cameraIndex)(相机 1 API)时出现以下错误

MethodInvocationProxy:调用方法时出现异常 public 抽象布尔值 android.media.IAudioService.isCameraSoundForced() 抛出 android.os.RemoteException java.lang.SecurityException:方法 class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不适用于免安装应用程序

06-18 10:23:43.361 26240-26359/? E/Isotope: UID: [10185] PID: [26240] MethodInvocationStub : Exception while calling method isCameraSoundForced java.lang.SecurityException: Method class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] not available to instant apps at com.google.android.instantapps.supervisor.ipc.proxies.SandboxEnforcer.enforceUnsupportedPolicy(PG:63) at com.google.android.instantapps.supervisor.ipc.proxies.SandboxEnforcer.enforceUnsupportedMethodPolicy(PG:17) at com.google.android.instantapps.supervisor.ipc.ProxyMethodHandler.handleMethod(PG:50) at com.google.android.instantapps.supervisor.ipc.base.MethodInvocationStub.onTransact(PG:56) at android.os.Binder.execTransact(Binder.java:453) 06-18 10:23:43.361 26274-26274/? E/Isotope: UID: [99000] PID: [26274] MethodInvocationProxy : Exception while calling method public abstract boolean android.media.IAudioService.isCameraSoundForced() throws android.os.RemoteException java.lang.SecurityException: Method class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] not available to instant apps at android.os.Parcel.readException(Parcel.java:1620) at android.os.Parcel.readException(Parcel.java:1573) at com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.readReply(PG:39) at com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.invoke(PG:130) at java.lang.reflect.Proxy.invoke(Proxy.java:393) at $Proxy5.isCameraSoundForced(Unknown Source) at android.hardware.Camera.getCameraInfo(Camera.java:260) at com.chegg.feature.wizard.camera.CameraActivity.getBackFacingCamera(CameraActivity.java:357) at com.chegg.feature.wizard.camera.CameraActivity.startCamera(CameraActivity.java:101) at com.chegg.feature.wizard.camera.CameraActivity.startCameraSafely(CameraActivity.java:79) at com.chegg.feature.wizard.camera.CameraActivity.onResume(CameraActivity.java:74) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1286) at android.app.Activity.performResume(Activity.java:6987) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:4144) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4245) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3360) at android.app.ActivityThread.access00(ActivityThread.java:221) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

免安装应用功能受限,显然不支持该方法。您可以使用 InstantApps.isInstantApp() 方法来确定它是已安装还是免安装应用程序,并仅在已安装时调用 isCameraSoundForced

更多信息:https://developer.android.com/topic/instant-apps/reference.html

android.hardware.Camera 在 API 级别 21 中被弃用,而即时应用仅支持 API 级别 23 的设备。您需要使用 android.hardware.camera2 代替。

https://developer.android.com/reference/android/hardware/camera2/package-summary.html

The android.hardware.camera2 package provides an interface to individual camera devices connected to an Android device. It replaces the deprecated Camera class.

此问题已在 https://issuetracker.google.com/issues/38485484 中解决 其中工程师提供了以下信息:

"Instant apps don't support the old deprecated android.hardware.Camera. They only support the camera2 APIs"

免安装应用 运行 在 Android O 和以前的版本上,它们使用 google 播放服务 运行。因此,API 26 之前的免安装应用不支持摄像头 1,因为它们本身不支持 运行。但是,您可以在 API 26 上的即时应用程序中使用相机 1 api,直到我想象的相机 1 api 还活着。

但是,我在免安装应用中使用相机 2 api,在安装的应用中使用相机 1 api。

这是 Google 免安装应用的 Play 服务支持的当前实现中的一个错误。

它将在未来的版本中修复,届时 android.hardware.Camera API 应该可以正常运行。

遗憾的是,我没有关于修复可用时间范围的任何具体信息。