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

Posted

技术标签:

【中文标题】java.lang.SecurityException:方法类 android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不可用【英文标题】:java.lang.SecurityException: Method class android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] not available 【发布时间】:2017-11-18 01:32:05 【问题描述】:

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

MethodInvocationProxy : 调用方法 public abstract boolean android.media.IAudioservice.isCameraSoundForced() 时出现异常抛出 android.os.RemoteException java.lang.SecurityException:方法类 android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不适用于即时应用

06-18 10:23:43.361 26240-26359/? E/同位素:UID:[10185] PID:[26240] MethodInvocationStub :调用方法时出现异常 isCameraSoundForced java.lang.SecurityException:方法类 android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不是 可用于即时应用 在 com.google.android.instantapps.supervisor.ipc.proxies.SandboxEnforcer.enforceUnsupportedPolicy(PG:63) 在 com.google.android.instantapps.supervisor.ipc.proxies.SandboxEnforcer.enforceUnsupportedMethodPolicy(PG:17) 在 com.google.android.instantapps.supervisor.ipc.ProxyMethodHandler.handleMethod(PG:50) 在 com.google.android.instantapps.supervisor.ipc.base.MethodInvocationStub.onTransact(PG:56) 在 android.os.Binder.execTransact(Binder.java:453) 06-18 10:23:43.361 26274-26274/? E/同位素:UID:[99000] PID:[26274] MethodInvocationProxy:调用方法公共抽象时出现异常 boolean android.media.IAudioService.isCameraSoundForced() 抛出 android.os.RemoteException java.lang.SecurityException:方法类 android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不是 可用于即时应用 在 android.os.Parcel.readException(Parcel.java:1620) 在 android.os.Parcel.readException(Parcel.java:1573) 在 com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.readReply(PG:39) 在 com.google.android.instantapps.supervisor.ipc.base.MethodInvocationProxy.invoke(PG:130) 在 java.lang.reflect.Proxy.invoke(Proxy.java:393) 在 $Proxy5.isCameraSoundForced(未知来源) 在 android.hardware.Camera.getCameraInfo(Camera.java:260) 在 com.chegg.feature.wizard.camera.CameraActivity.getBackFacingCamera(CameraActivity.java:357) 在 com.chegg.feature.wizard.camera.CameraActivity.startCamera(CameraActivity.java:101) 在 com.chegg.feature.wizard.camera.CameraActivity.startCameraSafely(CameraActivity.java:79) 在 com.chegg.feature.wizard.camera.CameraActivity.onResume(CameraActivity.java:74) 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1286) 在 android.app.Activity.performResume(Activity.java:6987) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:4144) 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4245) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3360) 在 android.app.ActivityThread.access$1100(ActivityThread.java:221) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:158) 在 android.app.ActivityThread.main(ActivityThread.java:7224) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

好的。不过,在使用 Camera 1 API Camera.open(cameraIndex) 时如何克服此错误。谢谢!【参考方案2】:

android.hardware.Camera 在 API 级别 21 中已被弃用,而 Instant Apps 仅支持 API 级别 23 的设备。您需要改用 android.hardware.camera2。

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

android.hardware.camera2 包提供了一个接口 连接到 Android 设备的单个相机设备。它取代 已弃用的 Camera 类。

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

“免安装应用不支持旧的已弃用的 android.hardware.Camera。它们仅支持 camera2 API”

【讨论】:

【参考方案3】:

免安装应用在 Android O 和​​以前的版本上原生运行,它们使用 google play 服务运行。因此,在 API 26 之前的即时应用程序中不支持相机 1,因为它们不是本机运行的。但是,您可以在 API 26 上的即时应用程序中使用 Camera 1 api,直到我想象的 Camera 1 api 存在。

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

【讨论】:

【参考方案4】:

这是当前实现对即时应用的 Google Play 服务支持的一个错误。

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

很遗憾,我没有关于可用修复时间范围的任何细节。

【讨论】:

以上是关于java.lang.SecurityException:方法类 android.media.IAudioService$Stub$Proxy.isCameraSoundForced[] 不可用的主要内容,如果未能解决你的问题,请参考以下文章