【问题标题】:MediaProjectionManager.getMediaProjection( ) problem in android 12android 12 中的 MediaProjectionManager.getMediaProjection( ) 问题
【发布时间】:2022-12-14 12:39:19
【问题描述】:

我创建了一个屏幕截图应用程序,它在所有 Android 设备上都运行良好。 但是我在android 12(小米11t)中截屏有问题我使用静态意图和结果代码然后克隆意图并将其传递给这个函数mediaProjectionManager.getMediaProjection(resultCode,clonedIntent)我第一次截屏没问题但是我第二次无法拍摄屏幕截图,出现此错误。 如果您需要更多信息,请告诉我。

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.koala.classor, PID: 10824
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.Set.add(java.lang.Object)' on a null object reference
    at android.os.Parcel.createExceptionOrNull(Parcel.java:2431)
    at android.os.Parcel.createException(Parcel.java:2409)
    at android.os.Parcel.readException(Parcel.java:2392)
    at android.os.Parcel.readException(Parcel.java:2334)
    at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:235)
    at android.media.projection.MediaProjection.<init>(MediaProjection.java:59)
    at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:119)
    at com.koala.classor.G.getMediaProjection(G.java:86)
    at com.koala.classor.OverScreenWindowService$2$1.run(OverScreenWindowService.java:194)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:210)
    at android.os.Looper.loop(Looper.java:299)
    at android.app.ActivityThread.main(ActivityThread.java:8105)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1045)
 Caused by: android.os.RemoteException: Remote stack trace:
    at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:553)
    at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
    at android.os.Binder.execTransactInternal(Binder.java:1182)
    at android.os.Binder.execTransact(Binder.java:1146)

 

【问题讨论】:

  • 你找到任何解决方案了吗?
  • 我还在 Android 12 设备(未知型号)的 Play 控制台中看到了这一点
  • 更新:我在 Android 12 (POCO X3 Pro) 上看到过这个

标签: android screenshot mediaprojection


【解决方案1】:

MIUI 13+安卓12

MediaProjectionManagerService的第553行报RemoteException错误。查看源码,报错信息是找不到申请mediaprojection的包。 猜测是MIUI为此维护了一个单独的列表,只有申请权限的包才会在里面,获取并关闭mediaprojection后会被移除。在其他系统中没有看到这样的机制。

换句话说,意图数据不能被重用。解决方法也很简单,使用完mediaprojection不要关闭即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-06
    • 2022-08-04
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多