cinit / QAuxiliary

QNotified phoenix - To make OICQ great again
Other
4.01k stars 305 forks source link

[Invalid][求教] 如何在宿主应用中直接读写 Prefernences #1117

Closed MoonLeeeaf closed 1 month ago

MoonLeeeaf commented 1 month ago

本人正在想办法给自己的模块适配免 root 框架,但目前为止均未取得成效,想到此项目,故想求方

在宿主应用中启动模块的配置页面,但是配置文件是储存在宿主应用中的 例如有一 PreferencesActivity,在模块中定义,然后模块还有一个页面,这个页面引导用户启动宿主应用,启动的页面是模块定义的 PreferencesActivity 在这个 PreferencesActivity 修改的任何设置都是在宿主应用中保存的

可能没有说太清楚,如何有不理解的可回问,本人目前一直寻求未果

目前已Close,因为我看不下去一个Invalid的Issue一直open下去(摊 算是第一次社恐来求方罢()

cinit commented 1 month ago

你 startActivity 的时候 extra bundle 塞个 binder 过去 AIDL IPC 不就行了,如此情况下,你的 PreferencesActivity 在模块进程,配置存储在宿主私有目录,唯一的问题就是你的 PreferencesActivity 必须从宿主侧 startActivity.

MoonLeeeaf commented 1 month ago

你 startActivity 的时候 extra bundle 塞个 binder 过去 AIDL IPC 不就行了,如此情况下,你的 PreferencesActivity 在模块进程,配置存储在宿主私有目录,唯一的问题就是你的 PreferencesActivity 必须从宿主侧 startActivity.

也就是模块分主页和配置页面,从主页打开配置页面时是通过 Hook 宿主的一个 Activity 然后获取 extra bundle 是否有指定的传参,再传入一个 Binder 到 bundle 然后启动配置页面,由此达成模块的 PreferencesActivity 直接读写存储在宿主私有目录的配置文件? 我回去研究下(

cinit commented 1 month ago

@MoonLeeeaf 传 binder 是目的,而 startActivity 是手段

MoonLeeeaf commented 1 month ago

也就是说,通过用 startActivity 启动宿主的 Activity 再传宿主进程的 Binder 给模块进程?

cinit commented 1 month ago

@MoonLeeeaf binder 是作为 startActivity bundle 参数传递副

MoonLeeeaf commented 1 month ago

恕鄙人修炼不足,尚有许多未能理解() 阁下意思是”宿主进程 -> startActivity(模块_Activity) 带 宿主_Binder -> IPC“么

Edit:实验是检验真理的唯一标准,先去研究下 本人需要的附件:IPC使用

为不影响正常维护,先把Issue关了( 感谢解答

cinit commented 1 month ago

@MoonLeeeaf 我指 ”宿主进程 -> startActivity(模块_Activity) 带 宿主_Binder“,而 IPC 是 startActivity 后你读写配置时的事情了

cinit commented 1 month ago

@MoonLeeeaf 你直接私聊我吧,在 issue 上讨论这个太费劲了。