XSharedPreferences всегда получает значение по умолчанию в моем модуле xposed - PullRequest
0 голосов
/ 27 октября 2019

Я пробовал много разных способов, но все еще не работает. Всегда получайте значения по умолчанию.

    public class HookTest implements IXposedHookLoadPackage  {
        private XSharedPreferences sharedPreferences;
        private final static String modulePackageName = HookTest.class.getPackage().getName();

        public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
            this.sharedPreferences = new XSharedPreferences(modulePackageName, "Values");
            sharedPreferences.makeWorldReadable();
            sharedPreferences.reload();
            XposedBridge.log("Xposed_test value: " +sharedPreferences.getBoolean("isRunning", false));
        }
}

я пробовал в MainActivity все нормально работает

восстановлено правильное значение

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button=(Button)findViewById(R.id.button);
    editText=(EditText)findViewById(R.id.editText);
    final SharedPreferences pref = this.getSharedPreferences("Values", Context.MODE_PRIVATE);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            editText.setText(""+pref.getBoolean("isRunning", false));
            if(pref.getBoolean("isRunning", false)==true) {
                setVlaue(MainActivity.this, false);
            }else {
                setVlaue(MainActivity.this, true);
            }
        }
    });
}
public void setVlaue(Context context,boolean isRunning) {
    Intent intent = new Intent("my.action.MyReceiver");
    intent.putExtra("isRunning", isRunning);
    context.sendBroadcast(intent);
}

1 Ответ

0 голосов
/ 09 ноября 2019

Настройка прав доступа к файлам (chmod +r shared_prefs shared_prefs/your_prefrences.xml) помогает в большинстве случаев. Но это не очень хороший трюк.

Хорошим решением является RemotePreferences , который использует ContentProvider для доступа к вашим префиксам

...