我的 Xposed 模块无法从 SharePreference 中获取键和值,但是当我将它放入 Xsharepreferences 时它可以工作

问题描述

在这里我尝试将键值 setResult 放在“android.telephony.TelephonyManager”中

XposeHook.Class

 XposedHelpers.findAndHookMethod("android.telephony.TelephonyManager",lpparam.classLoader,"getdeviceid",TYPE,new XC_MethodHook() {

 public void afterHookedMethod(MethodHookParam param) throws Throwable{
      XSharedPreferences pref = new XSharedPreferences("com.yuvi.pirate","user_prefs");
      param.setResult(pref.getString("imei_val1"," "));
 }

MainActivity.class

 final SharedPreferences sharedpreferences = getSharedPreferences("user_prefs",0);

 btn_imei.setonClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        SharedPreferences.Editor editor = sharedpreferences.edit();
        String trim = edt_imei.getText().toString().trim();
        editor.putString("imei_val1",trim);
        editor.apply();
    }

但是在将随机 imei 放入 editText 并单击按钮 btn_imei 后,它会在 Sharepreference 中创建密钥“imei_val1”和值“我在 editText 中写入的”,但 XSharePreference 无法获取我从 Sharepreference 中放入的随机密钥值

解决方法

它不采用 Sharepreference 因为我们无法在 android SDK N (24) 之后读取 user_pref.xml 所以我们必须让 user_prefs.xml 世界可读!所以让 sharepreference worldReadable 并解决

你必须做的让世界可读的首选项可读只需进入 targetSdk 23 或更少,他们使用 Context.Mode_Worldreadable 现在 Xsharedpreference 读取你的 prfs 文件