GithubHelp home page GithubHelp logo

Prefs相关问题 about yukihookapi HOT 24 CLOSED

highcapable avatar highcapable commented on May 19, 2024
Prefs相关问题

from yukihookapi.

Comments (24)

fankes avatar fankes commented on May 19, 2024

1.请问你的 sharedPreferences 对象是什么
2.请提供使用的 Xposed 框架名称,版本,以及具体实现代码和复现步骤

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

sharedPreferences是PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener的Callback第一个参数

Xposed框架为LSP最新版,代码为https://github.com/HCGStudio/FuckMIUIGesture

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

目前框架存储位置需要在模块激活的时候方可生效,你可以检查 /data/misc/一个很长的文件夹名称/模块包名/xxx.xml 有没有内容
暂时不知道 PrefManager 获取的内容是否为 hook 后的存储地址,或者请检查这两个值是否存到了同一个xml中,若不是,请使用 modulePrefs("手动指定名称")

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

另外看到了你的模块包名在注解中是手动设置的,请检查你的模块包名是否设置正确

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

包名是正确的,模块自身是能使用的

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

包名是正确的,模块自身是能使用的

那就看一下 /data/misc 下有没有内容了

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

检查内容是包含的

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="strong_mode" value="true" />
    <string name="strong_mode_enable">true</string>
</map>

其中也包含了我使用String的尝试,但是模块依旧无法读取我的配置。
此外这个文件名称为com.hcgstudio.miui.fuck.gesture_preferences.xml,在手动指定name的情况下,应该指定com.hcgstudio.miui.fuck.gesture_preferences

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

检查内容是包含的

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="strong_mode" value="true" />
    <string name="strong_mode_enable">true</string>
</map>

其中也包含了我使用String的尝试,但是模块依旧无法读取我的配置。
此外这个文件名称为com.hcgstudio.miui.fuck.gesture_preferences.xml,在手动指定name的情况下,应该指定com.hcgstudio.miui.fuck.gesture_preferences

看样子是不需要指定的,你用原生的 XShare 读取设置试试可不可以

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

使用原生

val xShare = XSharedPreferences("com.hcgstudio.miui.fuck.gesture")

Log打xShare.all出来依旧是{}

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

使用原生

val xShare = XSharedPreferences("com.hcgstudio.miui.fuck.gesture")

Log打xShare.all出来依旧是{}

如果原生也用不了的话大概可能是你的系统有点问题或者 LSPosed 有点问题,你可以去反馈一下,因为 API 调用的就是 XShare

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

检查发现xPref.file.absolutePath的路径是正确的,且包含配置。是不是因为hook程序的问题,我hook的是com.android.systemui

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

检查发现xPref.file.absolutePath的路径是正确的,且包含配置。是不是因为hook程序的问题,我hook的是com.android.systemui

我有两个同样的开源项目都hook了 systemui,详情可去参考一下,都是没有问题的

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

你把 API 改成 31 试试,但大概不会是这个的问题

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

是的,我也使用了你的模块,将API改成31依旧存在这个问题,而且发现xPref.file.readText会报错,无法read配置文件,我找上游反馈一下了

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

是的,我也使用了你的模块,将API改成31依旧存在这个问题,而且发现xPref.file.readText会报错,无法read配置文件,我找上游反馈一下了

那大概是这样了,我之前问过他们 XShare 的问题,可以试试 CI 版,解决不了就去问问吧

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

是的,我也使用了你的模块,将API改成31依旧存在这个问题,而且发现xPref.file.readText会报错,无法read配置文件,我找上游反馈一下了

什么代码会报错,具体错误日志是什么

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

问题已解决,按照文档手动设置即可。

        val pref = try {
            this.getSharedPreferences("${this.packageName}_preferences", Context.MODE_WORLD_READABLE)
        } catch (e: SecurityException) {
            // The new XSharedPreferences is not enabled or module's not loading
            null // other fallback, if any
        }

应该是库中没有处理好设置MODE_WORLD_READABLE导致

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

问题已解决,按照文档手动设置即可。

        val pref = try {
            this.getSharedPreferences("${this.packageName}_preferences", Context.MODE_WORLD_READABLE)
        } catch (e: SecurityException) {
            // The new XSharedPreferences is not enabled or module's not loading
            null // other fallback, if any
        }

应该是库中没有处理好设置MODE_WORLD_READABLE导致

这是你在 prefsmanager 中获取的数据,但不保证会重新设置 private,API 会自动帮你设置 MODE_WORLD_READABLE,若失败,会设置 MODE_PRIVATE 具体请参考 API 源码实现方式

应该是库中没有处理好设置MODE_WORLD_READABLE导致

请查看源码验证你的应该,若有问题可以再反馈

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

我重新过了一遍,你目前使用混合方式读写的用法大概是不对的,下个版本会加上对 prefsmanager 的扩展性支持,以及自动设置这个功能,我到时候会重新用你的项目测试一下,暂时先这样解决。

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

是的,我也使用了你的模块,将API改成31依旧存在这个问题,而且发现xPref.file.readText会报错,无法read配置文件,我找上游反馈一下了

另外,我的模块直接使用设置也不会被保存吗(也就是宿主不能读取设置)

from yukihookapi.

mahoshojoHCG avatar mahoshojoHCG commented on May 19, 2024

对的,你自己的模块一切正常,就是PreferenceFragmentCompat的问题了

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

对的,你自己的模块一切正常,就是PreferenceFragmentCompat的问题了

好的,感谢提供问题,晚上我会对这个功能进行一下适配

from yukihookapi.

fankes avatar fankes commented on May 19, 2024

该问题已修复,更新 API 版本即可,可参考 ModulePreferenceFragment 以及 Demo

from yukihookapi.

xihan123 avatar xihan123 commented on May 19, 2024

框架存储需要在模块激活的时候方可生效,你可以检查/data/misc/一个很长的文件夹名称/模块包名/xxx.xml 有内容 暂时不知道 PrefManager获取的内容是否为hook之后的存储地址,或者请这两个值是否存在同一个xml中,如果不是,请使用modulePrefs("手动指定检查名称")

我也遇到这个问题,各种办法都没用,直到手动把你说的这个目录模块包名文件夹权限手动改成777,不知道为什么会自己变成711

from yukihookapi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.