XSharedPreferences在Xposed里面的作用

原创
2016/09/29 15:33
阅读数 1.7K

Xposed的开发文档 https://github.com/rovo89/XposedBridge/wiki/Development-tutorial

比如我们要做一个App(类似于http://git.oschina.net/sulliy/MinMinLock),它可以限制系统系统中其他App是不是可以启动。这里有个数据沟通的问题。我们的App设置好禁止启动App A,B,C。我们提供给Xposed的IXposedHookLoadPackage子类并不在我们的App进程环境用运行。自己做个Content Provider也可行,但是太麻烦了。能不能有简单点的办法?

XSharedPreferences应该是最简单的办法了。首先我们在自己App的调用标准的Android SP接口记录一下App A,B,C的控制状态。SP的模式很重要,设置为MODE_WORLD_READABLE,其他App才能访问。

private SharedPreferences pref;

pref = getSharedPreferences(getPackageName() + "_preferences", MODE_WORLD_READABLE);

pref.edit().putBoolean(packageName, true).commit();   //true表示禁止启动,false表示可以启动

我们知道SP实际上市对应在/data/data/<Package Name>/shared_prefs/<Package Name>_preferences.xml文件。里面按键值对的形式存放。XSharedPreferences做的工作实际上就是根据<Package Name>自己去解析这个文件,然后读出数据存放在一个HashMap当中。

因此,我们可以在自己的IXposedHookLoadPackage子类中利用XSharedPreferences来获取App A,B,C的控制状态。

private static XSharedPreferences pref;

pref = new XSharedPreferences(MY_PACKAGE_NAME);

pref.reload();

boolean block = pref.getBoolean(packageName, false);

XSharedPreferences是只读的,并不允许进行写操作。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部