Closed xiaren2 closed 2 years ago
安卓9,miui12
有提示未授权吗,很长的一串
请问问题解决了吗 三日后无回复默认已解决,将关闭issue
打开vcam,提示"vcam:不存在替换视频",没有很长的未授权啥的字符串。使用的vcam3.8
是edxp吗
如果是全局模式的话,可能是因为其他应用程序没有权限读取相册,在私有目录下也未发现视频,但不影响正常使用。
lsp,不是全局,只针对某些应用生效。反正自从3.4,体积缩小以后就不能用了。打开vcam会有那个提示,打来作用的app,也会有那个提示。3.4就正常。
这个功能是3.5加进去的 检查一下目标应用在系统设置里的权限?
在 2021年11月30日,上午7:29,xiaren2 @.***> 写道:
lsp,不是全局,只针对某些应用生效。反正自从3.4,体积缩小以后就不能用了。打开vcam会有那个提示,打来作用的app,也会有那个提示。3.4就正常。
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
如果已经授权读取本地目录,那么请发一下xposed日志
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:167) at android.widget.Toast.getLooper(Toast.java:182) at android.widget.Toast.<init>(Toast.java:167) at android.widget.Toast.makeText(Toast.java:500) at android.widget.Toast.makeText(Toast.java:483) at com.example.vcam.HookMain.handleLoadPackage(HookMain.java:143) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(Unknown Source:2) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(Unknown Source:6) at de.robv.android.xposed.callbacks.XCallback.callAll(Unknown Source:28) at D1.afterHookedMethod(Unknown Source:111) at de.robv.android.xposed.LspHooker.handleHookedMethod(Unknown Source:136) at LspHooker_.getClassLoader(Unknown Source:8) at android.app.ContextImpl.getClassLoader(ContextImpl.java:453) at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:508) at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:348) at android.webkit.WebSettings.getDefaultUserAgent(WebSettings.java:1365) at com.tencent.mm.normsg.c$p.aa(Native Method) at com.tencent.mm.plugin.normsg.b.fGT(SourceFile:12030) at com.tencent.mm.plugin.normsg.a.d.fGT(SourceFile:425) at com.tencent.mm.protocal.j$a.toProtoBuf(SourceFile:143) at com.tencent.mm.al.x.a(SourceFile:144) at com.tencent.mm.protocal.h$a.onTransact(SourceFile:180) at android.os.Binder.execTransactInternal(Binder.java:1179) at android.os.Binder.execTransact(Binder.java:1143)
首先日志只复制了一半,最关键的前面是什么导致的这个问题,没有复制。
不过微信应该没有这个bug,我测试过
[ 2021-12-03T09:48:58.268 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua [ 2021-12-03T09:48:58.284 10266: 9179: 9179 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk [ 2021-12-03T09:48:58.286 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-03T09:48:58.617 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module eu.faircode.xlua from /data/app/~~Dfc3HzSu7aalj14EdvudoA==/eu.faircode.xlua-59VTZgBaHr_9p8GHKwaFUw==/base.apk [ 2021-12-03T09:48:58.662 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua [ 2021-12-03T09:48:58.680 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk [ 2021-12-03T09:48:58.682 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-03T09:49:00.095 10266: 8805: 8823 E/LSPosed-Bridge ] java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare() at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:167) at android.widget.Toast.getLooper(Toast.java:182) at android.widget.Toast.<init>(Toast.java:167) at android.widget.Toast.makeText(Toast.java:500) at android.widget.Toast.makeText(Toast.java:483) at com.example.vcam.HookMain.handleLoadPackage(HookMain.java:143) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(Unknown Source:2) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(Unknown Source:6) at de.robv.android.xposed.callbacks.XCallback.callAll(Unknown Source:28) at D1.afterHookedMethod(Unknown Source:111) at de.robv.android.xposed.LspHooker.handleHookedMethod(Unknown Source:136) at LspHooker_.getClassLoader(Unknown Source:8) at android.app.ContextImpl.getClassLoader(ContextImpl.java:453) at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:508) at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:348) at android.webkit.WebSettings.getDefaultUserAgent(WebSettings.java:1365) at com.tencent.mm.normsg.c$p.aa(Native Method) at com.tencent.mm.plugin.normsg.b.fGT(SourceFile:12030) at com.tencent.mm.plugin.normsg.a.d.fGT(SourceFile:425) at com.tencent.mm.protocal.j$a.toProtoBuf(SourceFile:143) at com.tencent.mm.al.x.a(SourceFile:144) at com.tencent.mm.protocal.h$a.onTransact(SourceFile:180) at android.os.Binder.execTransactInternal(Binder.java:1179) at android.os.Binder.execTransact(Binder.java:1143)
模块日志就这么点。运行环境android 12,安装了存储空间隔离。
同样一个视频文件,更新到3.8之后,放在相机目录camera1下面能正常使用。禁止存储权限之后放在/Android/data/com.tencent.mm/file/camera1/virtual.mp4就无法使用了。
`[ 2021-12-03T09:48:58.268 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua
[ 2021-12-03T09:48:58.284 10266: 9179: 9179 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk
[ 2021-12-03T09:48:58.286 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain
[ 2021-12-03T09:48:58.617 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module eu.faircode.xlua from /data/app/~~Dfc3HzSu7aalj14EdvudoA==/eu.faircode.xlua-59VTZgBaHr_9p8GHKwaFUw==/base.apk
[ 2021-12-03T09:48:58.662 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua
[ 2021-12-03T09:48:58.680 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk
[ 2021-12-03T09:48:58.682 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain
[ 2021-12-03T09:49:00.095 10266: 8805: 8823 E/LSPosed-Bridge ] java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare()
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:167)
at android.widget.Toast.getLooper(Toast.java:182)
at android.widget.Toast.
(Toast.java:167) at android.widget.Toast.makeText(Toast.java:500)
at android.widget.Toast.makeText(Toast.java:483)
at com.example.vcam.HookMain.handleLoadPackage(HookMain.java:143)
at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(Unknown Source:2)
at de.robv.android.xposed.callbacks.XC_LoadPackage.call(Unknown Source:6)
at de.robv.android.xposed.callbacks.XCallback.callAll(Unknown Source:28)
at D1.afterHookedMethod(Unknown Source:111)
at de.robv.android.xposed.LspHooker.handleHookedMethod(Unknown Source:136)
at LspHooker_.getClassLoader(Unknown Source:8)
at android.app.ContextImpl.getClassLoader(ContextImpl.java:453)
at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:508)
at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:348)
at android.webkit.WebSettings.getDefaultUserAgent(WebSettings.java:1365)
at com.tencent.mm.normsg.c$p.aa(Native Method)
at com.tencent.mm.plugin.normsg.b.fGT(SourceFile:12030)
at com.tencent.mm.plugin.normsg.a.d.fGT(SourceFile:425)
at com.tencent.mm.protocal.j$a.toProtoBuf(SourceFile:143)
at com.tencent.mm.al.x.a(SourceFile:144)
at com.tencent.mm.protocal.h$a.onTransact(SourceFile:180)
at android.os.Binder.execTransactInternal(Binder.java:1179)
at android.os.Binder.execTransact(Binder.java:1143)
`
模块日志就这么点。运行环境android 12,安装了存储空间隔离。
同样一个视频文件,更新到3.8之后,放在相机目录camera1下面能正常使用。禁止存储权限之后放在/Android/data/com.tencent.mm/file/camera1/virtual.mp4就无法使用了。
首先,请注意大小写,然后文件夹叫files,不是file(谷歌规定的) 日志里体现的错误将在下个版本修复
3.4正常,3.5,3.6提示视频不存在,但是Camera1文件夹我根本就没动,卸载重新安装3.4,又能正常使用。
问题解决了吗?蓝奏云链接取消了。
[ 2021-12-03T09:48:58.268 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua [ 2021-12-03T09:48:58.284 10266: 9179: 9179 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk [ 2021-12-03T09:48:58.286 10266: 9179: 9179 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-03T09:48:58.617 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module eu.faircode.xlua from /data/app/~~Dfc3HzSu7aalj14EdvudoA==/eu.faircode.xlua-59VTZgBaHr_9p8GHKwaFUw==/base.apk [ 2021-12-03T09:48:58.662 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class eu.faircode.xlua.XLua [ 2021-12-03T09:48:58.680 10266: 9198: 9198 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~MlXA6b14fqqou6RlTjhVOQ==/com.example.vcam-hb4IpYOn57uw6TFtf_LY4Q==/base.apk [ 2021-12-03T09:48:58.682 10266: 9198: 9198 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-03T09:49:00.095 10266: 8805: 8823 E/LSPosed-Bridge ] java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare() at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:167) at android.widget.Toast.getLooper(Toast.java:182) at android.widget.Toast.(Toast.java:167) at android.widget.Toast.makeText(Toast.java:500) at android.widget.Toast.makeText(Toast.java:483) at com.example.vcam.HookMain.handleLoadPackage(HookMain.java:143) at de.robv.android.xposed.IXposedHookLoadPackage$Wrapper.handleLoadPackage(Unknown Source:2) at de.robv.android.xposed.callbacks.XC_LoadPackage.call(Unknown Source:6) at de.robv.android.xposed.callbacks.XCallback.callAll(Unknown Source:28) at D1.afterHookedMethod(Unknown Source:111) at de.robv.android.xposed.LspHooker.handleHookedMethod(Unknown Source:136) at LspHooker_.getClassLoader(Unknown Source:8) at android.app.ContextImpl.getClassLoader(ContextImpl.java:453) at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:508) at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:348) at android.webkit.WebSettings.getDefaultUserAgent(WebSettings.java:1365) at com.tencent.mm.normsg.c$p.aa(Native Method) at com.tencent.mm.plugin.normsg.b.fGT(SourceFile:12030) at com.tencent.mm.plugin.normsg.a.d.fGT(SourceFile:425) at com.tencent.mm.protocal.j$a.toProtoBuf(SourceFile:143) at com.tencent.mm.al.x.a(SourceFile:144) at com.tencent.mm.protocal.h$a.onTransact(SourceFile:180) at android.os.Binder.execTransactInternal(Binder.java:1179) at android.os.Binder.execTransact(Binder.java:1143)
模块日志就这么点。运行环境android 12,安装了存储空间隔离。 同样一个视频文件,更新到3.8之后,放在相机目录camera1下面能正常使用。禁止存储权限之后放在/Android/data/com.tencent.mm/file/camera1/virtual.mp4就无法使用了。首先,请注意大小写,然后文件夹叫files,不是file(谷歌规定的) 日志里体现的错误将在下个版本修复
确实是files和Camera1,昨天手机打字没注意检查。抱歉!
请问3.9版本有解决吗?
[ 2021-12-11T04:11:45.703 10211: 28515: 28515 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~HrlRugxt2ysIBezqRzYyDg==/com.example.vcam-MFqAeFuQsOrznMT1ceh-CQ==/base.apk [ 2021-12-11T04:11:45.705 10211: 28515: 28515 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-11T04:11:49.138 10211: 28515: 28515 I/LSPosed-Bridge ] 【VCAM】应用创建了渲染器:宽:3840 高:2160格式256 [ 2021-12-11T04:11:49.587 10211: 28515: 28574 I/LSPosed-Bridge ] 【VCAM】[toast]java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare() [ 2021-12-11T04:12:01.675 10211: 28515: 28515 I/LSPosed-Bridge ] 【VCAM】应用创建了渲染器:宽:3840 高:2160格式256 [ 2021-12-11T04:12:01.837 10211: 28515: 28572 I/LSPosed-Bridge ] 【VCAM】[toast]java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare()
我使用了存储空间隔离这个软件隔离了微信。vcam认为微信使用了存储权限,跑去DCIM/Camera1下寻找virtual.mp4。而不是我在/Android/data/微信目录的files/Camera1下去寻找。 因为在实际应用场景中很有可能针对复数的app指定不同的视频。我个人建议app的主界面给用户两个选择 1:使用/DCIM/Camera1/virtual.mp4 2:使用/Android/data/[app包名]/files/Camera1/virtual.mp4
或者更极端一点的vcam采用自己存储目录,hook了app之后,在vcam存储目录下建立被hookapp包名的子目录,在子目录下放置需要的virtual.mp4和bmp文件。 缺点就是复数app使用同一个视频文件,会有重复文件占用空间。优点就是针对各个app hook的管理方便,无需判断其他app存储权限之类的
[ 2021-12-11T04:11:45.703 10211: 28515: 28515 I/LSPosed-Bridge ] Loading module com.example.vcam from /data/app/~~HrlRugxt2ysIBezqRzYyDg==/com.example.vcam-MFqAeFuQsOrznMT1ceh-CQ==/base.apk [ 2021-12-11T04:11:45.705 10211: 28515: 28515 I/LSPosed-Bridge ] Loading class com.example.vcam.HookMain [ 2021-12-11T04:11:49.138 10211: 28515: 28515 I/LSPosed-Bridge ] 【VCAM】应用创建了渲染器:宽:3840 高:2160格式256 [ 2021-12-11T04:11:49.587 10211: 28515: 28574 I/LSPosed-Bridge ] 【VCAM】[toast]java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare() [ 2021-12-11T04:12:01.675 10211: 28515: 28515 I/LSPosed-Bridge ] 【VCAM】应用创建了渲染器:宽:3840 高:2160格式256 [ 2021-12-11T04:12:01.837 10211: 28515: 28572 I/LSPosed-Bridge ] 【VCAM】[toast]java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare()
我使用了存储空间隔离这个软件隔离了微信。vcam认为微信使用了存储权限,跑去DCIM/Camera1下寻找virtual.mp4。而不是我在/Android/data/微信目录的files/Camera1下去寻找。 因为在实际应用场景中很有可能针对复数的app指定不同的视频。我个人建议app的主界面给用户两个选择 1:使用/DCIM/Camera1/virtual.mp4 2:使用/Android/data/[app包名]/files/Camera1/virtual.mp4
或者更极端一点的vcam采用自己存储目录,hook了app之后,在vcam存储目录下建立被hookapp包名的子目录,在子目录下放置需要的virtual.mp4和bmp文件。 缺点就是复数app使用同一个视频文件,会有重复文件占用空间。优点就是针对各个app hook的管理方便,无需判断其他app存储权限之类的
就是因为每一个应用独立设置太麻烦,所以才使用相册目录,因为读取相册权限还是比较低的。 但是VCAM创建的私有目录不行,除非软件向用户申请,否则不允许跨应用读取私有目录(安卓11) 至于你说的存储重定向,给重定向的目录底下搞个DCIM目录试下?
唔,尝试了一下。因为使用存储空间隔离之后,默认软件就获得了访问存储空间权限。 实际上是存储空间隔离有选项开启软件访问相册的功能,不过我针对Tencent全家桶全部禁止访问了,单独开启授权/DCIM/Camera1/文件夹就可以。但是还是未解决复数app使用不同virtual.mp4的场景。如果切换使用的话需要不停的进目录改修改文件名和杀进程。
还有部分软件譬如telegram x,禁止文件和媒体权限在saved message下聊天框点击使用相机功能直接没反应,必须授权之后才能使用该功能,但是授权之后都在app包的files/Camera1下面就无法调用,强制去找了/DCIM/Camera1/virtual.mp4。
如果创建私有目录不可行的话,在/DCIM/Camera1下使用对应软件包名的视频文件:com.tencent.mm.mp4表示微信使用,org.thunderdog.challegram.mp4表示telegram x使用,这种方式是否可行?但又会存在一个问题,复数app使用同一个视频就需要两份一模一样的视频文件。不知道创建软链接能不能解决。
唔,尝试了一下。因为使用存储空间隔离之后,默认软件就获得了访问存储空间权限。 实际上是存储空间隔离有选项开启软件访问相册的功能,不过我针对Tencent全家桶全部禁止访问了,单独开启授权/DCIM/Camera1/文件夹就可以。但是还是未解决复数app使用不同virtual.mp4的场景。如果切换使用的话需要不停的进目录改修改文件名和杀进程。
还有部分软件譬如telegram x,禁止文件和媒体权限在saved message下聊天框点击使用相机功能直接没反应,必须授权之后才能使用该功能,但是授权之后都在app包的files/Camera1下面就无法调用,强制去找了/DCIM/Camera1/virtual.mp4。
如果创建私有目录不可行的话,在/DCIM/Camera1下使用对应软件包名的视频文件:com.tencent.mm.mp4表示微信使用,org.thunderdog.challegram.mp4表示telegram x使用,这种方式是否可行?但又会存在一个问题,复数app使用同一个视频就需要两份一模一样的视频文件。不知道创建软链接能不能解决。
目前最方便的方法独立每个应用的视频就是ban掉存储权限 软链接这个不现实,sdacrd目录下貌似不可以,而且不是谁都有权限的。 之后可能会加一个手动切换。
3.4正常,3.5,3.6提示视频不存在,但是Camera1文件夹我根本就没动,卸载重新安装3.4,又能正常使用。