Make IRemotePreferenceCallback internal

This commit is contained in:
Nullptr 2022-12-28 15:20:09 +08:00 committed by LoveSy
parent 4137282af9
commit 050438e31f
6 changed files with 15 additions and 13 deletions

View File

@ -94,9 +94,9 @@ public class ApplicationServiceClient implements ILSPApplicationService, IBinder
}
@Override
public Bundle requestRemotePreference(String packageName, int userId, String group, IBinder callback) {
public Bundle requestRemotePreferences(String packageName, int userId, String group, IBinder callback) {
try {
return service.requestRemotePreference(packageName, userId, group, callback);
return service.requestRemotePreferences(packageName, userId, group, callback);
} catch (RemoteException | NullPointerException ignored) {
}
return null;

View File

@ -239,7 +239,7 @@ public class LSPosedContext extends XposedContext {
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
if (name == null) throw new IllegalArgumentException("name must not be null");
return mRemotePrefs.computeIfAbsent(name, __ -> new LSPosedRemotePreference(mPackageName, Process.myPid() / PER_USER_RANGE, name));
return mRemotePrefs.computeIfAbsent(name, __ -> new LSPosedRemotePreferences(mPackageName, Process.myPid() / PER_USER_RANGE, name));
}
@Override

View File

@ -15,17 +15,16 @@ import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
import de.robv.android.xposed.XposedBridge;
import io.github.xposed.xposedservice.IXRemotePreferenceCallback;
@SuppressWarnings("unchecked")
public class LSPosedRemotePreference implements SharedPreferences {
public class LSPosedRemotePreferences implements SharedPreferences {
private final Map<String, Object> mMap = new ConcurrentHashMap<>();
private static final Object CONTENT = new Object();
final WeakHashMap<OnSharedPreferenceChangeListener, Object> mListeners = new WeakHashMap<>();
IXRemotePreferenceCallback callback = new IXRemotePreferenceCallback.Stub() {
IRemotePreferenceCallback callback = new IRemotePreferenceCallback.Stub() {
@Override
synchronized public void onUpdate(Bundle bundle) {
if (bundle.containsKey("map"))
@ -33,18 +32,16 @@ public class LSPosedRemotePreference implements SharedPreferences {
if (bundle.containsKey("diff")) {
for (var key : bundle.getStringArrayList("diff")) {
synchronized (mListeners) {
mListeners.forEach((listener, __) -> {
listener.onSharedPreferenceChanged(LSPosedRemotePreference.this, key);
});
mListeners.forEach((listener, __) -> listener.onSharedPreferenceChanged(LSPosedRemotePreferences.this, key));
}
}
}
}
};
public LSPosedRemotePreference(String packageName, int userId, String group) {
public LSPosedRemotePreferences(String packageName, int userId, String group) {
try {
Bundle output = serviceClient.requestRemotePreference(packageName, userId, group, callback.asBinder());
Bundle output = serviceClient.requestRemotePreferences(packageName, userId, group, callback.asBinder());
callback.onUpdate(output);
} catch (RemoteException e) {
XposedBridge.log(e);

View File

@ -143,7 +143,7 @@ public class LSPApplicationService extends ILSPApplicationService.Stub {
}
@Override
public Bundle requestRemotePreference(String packageName, int userId, String group, IBinder callback) throws RemoteException {
public Bundle requestRemotePreferences(String packageName, int userId, String group, IBinder callback) throws RemoteException {
ensureRegistered();
// TODO: Handle callback
var bundle = new Bundle();

View File

@ -0,0 +1,5 @@
package org.lsposed.lspd.impl;
interface IRemotePreferenceCallback {
oneway void onUpdate(in Bundle map);
}

View File

@ -11,7 +11,7 @@ interface ILSPApplicationService {
String getPrefsPath(String packageName);
Bundle requestRemotePreference(String packageName, int userId, String group, IBinder callback);
Bundle requestRemotePreferences(String packageName, int userId, String group, IBinder callback);
ParcelFileDescriptor requestInjectedManagerBinder(out List<IBinder> binder);
}