TonyJiangWJ/Ant-Forest

申请截图权限的时候闪退

caiabc opened this issue · 15 comments

看到
_

“目前部分设备升级了MIUI13(Android 12)之后存在以下问题:

申请截图权限的时候闪退
需要安装特殊版本的Autojs 目前看来所有的开源版本都扑街了 可以加群获取 或者前往修改版 下载特殊版本

但是但是,我用的这个新版本
“优化神奇海洋收集,使用shizuku进行点击。需要安装并激活shizuku并安装支持shizuku的autojs,否则无法使用
支持shizuku的版本下载:https://www.lanzouh.com/b042le51i 密码:b034
”_

那么,请问,我既需要支持shizuku,又需要躲避闪退,应该用什么版本呢?

我的手机是小米12spro,系统是MIUI13.0.18。
烦请抽空指导!

。。。你不能提问前自己下载试试?都修复了

。。。你不能提问前自己下载试试?都修复了

抱歉,我是已经使用了支持shizuku的版本下载:https://www.lanzouh.com/b042le51i 密码:b034
这个版本,还遇到了问题,才来提问的。

上面有三个版本?修改版、困鱼版和打包插件版。基于放心起见,然后我用了修改版。然后,还是闪退的。

通知服务允许了没

通知服务允许了没

是autojs界面设置上的“通知读取权限”开关是否打开吗?
我的没有打开“通知读取权限”,服务中只打开了“无障碍服务”、其他中打开了“启用shizuku”和"使用alarmmanager调度服务"

需要说明的是,闪退不是每一次运行都会闪退,而是,运行了三五回后,也不确定是多少回后,才闪退的。
闪退后,会自动打开设置,让我同意无障碍服务开启。

现在的闪退很频繁,比老版本的modify版本下多。
这是今天早上7:20--->7:22左右的崩溃stack
Version: 489
Android: 31
android.os.RemoteException: Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1149)

java.lang.RuntimeException:Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
android.app.ActivityThread.deliverResults(ActivityThread.java:5479)
......
Caused by:
android.os.RemoteException:Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1149)

log-verboses.zip

另外说明,我已经把autojs界面设置上的服务,其中的通知权限打开了,但是,崩溃依然。

07:20:00.474/V: 异常终止的重启任务已存在: [{"mAction":"org.autojs.autojs.action.startup","mLocal":true,"mScriptPath":"/storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/prototype/CrashCatcher.js","mId":102}]
07:20:00.599/V: 通过event.on('exit')注册生命周期回调
07:20:00.633/I: 当前OpenCV版本:4.8.0
07:20:00.722/W: 未开启电量无限制,PaddleOCR可能会闪退,自动禁用PaddleOCR。请主动开启或运行unit/关闭电量限制.js 选择无限制
07:20:00.728/V: 当前本地OCR优先级为:auto
07:20:00.729/V: 当前启用的OCR为:mlkit 是否支持:true
07:20:00.751/V: 当前本地OCR优先级为:auto
07:20:00.752/V: 当前启用的OCR为:mlkit 是否支持:true
07:20:00.753/I: 当前使用的OCR类型为:mlkit 是否启用:true
07:20:00.779/D: 使用自定义解锁模块
07:20:00.812/V: Is _origin_images null? false.
07:20:00.816/V: 当前可用内存:3772932096b 3598.1484375MB
07:20:00.818/V: 预估单张图片大小:1.544952392578125MB
07:20:00.819/V: 支持最大图片张数:100 一半:50
07:20:00.820/V: 图片资源代理创建完毕,准备替换scope中的images
07:20:00.821/V: 图片资源代理替换images完毕
07:20:00.822/D: ======加入任务队列,并关闭重复运行的脚本=======
07:20:00.828/V: 队列小于等于1 不需要去重:[]
07:20:00.832/V: 当前无任务等待,直接执行:{"source":"/storage/emulated/0/脚本/Ant-Forest-1.4.3.1/unit/神奇海洋收集.js","engineId":53,"storageKey":"ant_forest_config_fork_version"}
07:20:00.834/V: 设置脚本状态为执行中
07:20:00.849/D: 需要重新锁定屏幕
07:20:00.855/I: 即将解锁执行,按音量下键延迟五分钟执行
07:20:01.056/V: [BeforeUnlock] after setMaxListeners
07:20:01.057/V: [BeforeUnlock] after observeKey
07:20:01.058/V: after setOnceKeyDown
07:20:01.861/V: 滑动解锁,设备分辨率:1080,2400
07:20:10.723/V: 保存是否需要重新锁屏:true
07:20:10.729/V: current time [7:20]
07:20:10.746/V: windowRoots size: 1
07:20:10.747/V: 获取包名总耗时:17ms
07:20:10.748/V: 不再展示延迟对话框,screen_locked
07:20:10.750/V: 当前屏幕朝向:1
07:20:10.754/I: 即将开始,按音量下键延迟五分钟执行
07:20:11.270/V: try to find one: START NOW|立即开始|允许 timeout: 8000ms
07:20:11.272/V: 准备校验文件是否加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex
07:20:11.272/V: 准备校验文件是否加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex
07:20:11.272/V: 未加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex
07:20:11.272/V: 未加载 /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex
loadDex: file = /storage/emulated/0/脚本/Ant-Forest-1.4.3.1/lib/autojs-common.dex
dex file size: 48048
当前文件已加载 跳过加载:autojs-common.dex
07:20:11.280/V: find text START NOW|立即开始|允许 立即开始
07:20:11.481/V: 查找目标id:android:id/checkbox timeout: 200
07:20:11.683/W: 未能找到id:android:id/checkbox对应的控件
07:20:11.684/V: 查找目标id:com.android.systemui:id/remember timeout: 200
07:20:11.885/W: 未能找到id:com.android.systemui:id/remember对应的控件
07:20:11.885/W: 未找到记住按钮
07:20:11.886/V: 点击允许截图权限
07:20:11.886/V: try to find one: START NOW|立即开始|允许 timeout: 200ms
07:20:11.890/V: find text START NOW|立即开始|允许 立即开始
Uncaught Exception
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
at android.app.ActivityThread.deliverResults(ActivityThread.java:5479)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5518)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2286)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:211)
at android.os.Looper.loop(Looper.java:300)
at android.app.ActivityThread.main(ActivityThread.java:8237)
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:1046)
Caused by: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
at android.os.Parcel.createExceptionOrNull(Parcel.java:2426)
at android.os.Parcel.createException(Parcel.java:2410)
at android.os.Parcel.readException(Parcel.java:2393)
at android.os.Parcel.readException(Parcel.java:2335)
at android.media.projection.IMediaProjection$Stub$Proxy.start(IMediaProjection.java:235)
at android.media.projection.MediaProjection.(MediaProjection.java:59)
at android.media.projection.MediaProjectionManager.getMediaProjection(MediaProjectionManager.java:119)
at com.stardust.autojs.core.image.capture.GlobalScreenCapture.initCapture(GlobalScreenCapture.java:92)
at com.stardust.autojs.runtime.api.Images.lambda$requestScreenCapture$2$com-stardust-autojs-runtime-api-Images(Images.java:98)
at com.stardust.autojs.runtime.api.Images$$ExternalSyntheticLambda0.onRequestResult(Unknown Source:6)
at com.stardust.autojs.AutoJs$ScreenCaptureRequesterImpl.lambda$setOnActivityResultCallback$0$com-stardust-autojs-AutoJs$ScreenCaptureRequesterImpl(AutoJs.java:257)
at com.stardust.autojs.AutoJs$ScreenCaptureRequesterImpl$$ExternalSyntheticLambda0.onRequestResult(Unknown Source:4)
at com.stardust.autojs.core.image.capture.ScreenCaptureRequester$AbstractScreenCaptureRequester.onResult(ScreenCaptureRequester.java:47)
at com.stardust.autojs.core.image.capture.ScreenCaptureRequester$ActivityScreenCaptureRequester.onActivityResult(ScreenCaptureRequester.java:89)
at com.stardust.app.OnActivityResultDelegate$Mediator.onActivityResult(OnActivityResultDelegate.java:32)
at com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity.onActivityResult(ScreenCaptureRequestActivity.java:67)
at android.app.Activity.dispatchActivityResult(Activity.java:8692)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5472)
... 13 more
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1149)

CrashHandler:onCrashHandleStart: crashType = 0, errorType = android.os.RemoteException, msg = Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1149)
, stack = java.lang.RuntimeException:Failure delivering result ResultInfo{who=null, request=17777, result=-1, data=Intent { (has extras) }} to activity {org.autojs.autojs.modify/com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity}: java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION
android.app.ActivityThread.deliverResults(ActivityThread.java:5479)
......
Caused by:
android.os.RemoteException:Remote stack trace:
at com.android.server.media.projection.MediaProjectionManagerService$MediaProjection.start(MediaProjectionManagerService.java:555)
at android.media.projection.IMediaProjection$Stub.onTransact(IMediaProjection.java:137)
at android.os.Binder.execTransactInternal(Binder.java:1190)
at android.os.Binder.execTransact(Binder.java:1149)

不是和你说了吗 打开通知权限-还不行就打开前台服务

我已经把autojs界面设置上的服务,其中的通知权限打开了,但是,崩溃依然。

1710842829574

是应用的通知权限 怎么和你沟通这么累呢

老大呀,其实,我从昨晚开始,就已经打开了通知权限,而且结果就是和您最后发的截图类似的画面,只是因为我的手机系统是MIUI13的,细节上有微小区别。又因为即使我打开了通知权限,还是一直遭遇崩溃,所以,我也就怀疑是不是我设置的地方有错了。其实,无论是从安卓手机的设置里头做通知权限设置,还是从autojs的主界面的菜单上选择做,效果都是一样的。
1710842562702
1710842562700
1710842562697

中午,我补充打开了前台权限,然后,开始使用观察,目前整个下午没有再遭遇崩溃了。这是一个好消息。

从日志看 就是因为没有给前台服务权限,我修改的autojs版本是在获取截图权限后一直有一个前台通知的,标题为Recording,所以我认为你是没给通知权限。

Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION

既然现在解决了 那你就最好一直打开前台服务吧

经过连续多天观察,问题确实解决了,谢谢。