【发布时间】:2019-10-27 19:04:58
【问题描述】:
我尝试了许多不同的方法,但仍然无法正常工作。 始终获取默认值。
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);
}
【问题讨论】:
-
handleLoadPackage 通常在应用程序启动之前调用,因此当您阅读
isRunning时,该应用程序尚未启动。根据应用程序写入此值的时间,只读取false是合理的。
标签: java android sharedpreferences xposed