Make IRemotePreferenceCallback internal
This commit is contained in:
parent
4137282af9
commit
050438e31f
|
|
@ -94,9 +94,9 @@ public class ApplicationServiceClient implements ILSPApplicationService, IBinder
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Bundle requestRemotePreference(String packageName, int userId, String group, IBinder callback) {
|
public Bundle requestRemotePreferences(String packageName, int userId, String group, IBinder callback) {
|
||||||
try {
|
try {
|
||||||
return service.requestRemotePreference(packageName, userId, group, callback);
|
return service.requestRemotePreferences(packageName, userId, group, callback);
|
||||||
} catch (RemoteException | NullPointerException ignored) {
|
} catch (RemoteException | NullPointerException ignored) {
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,7 @@ public class LSPosedContext extends XposedContext {
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences(String name, int mode) {
|
public SharedPreferences getSharedPreferences(String name, int mode) {
|
||||||
if (name == null) throw new IllegalArgumentException("name must not be null");
|
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
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -15,17 +15,16 @@ import java.util.WeakHashMap;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import de.robv.android.xposed.XposedBridge;
|
import de.robv.android.xposed.XposedBridge;
|
||||||
import io.github.xposed.xposedservice.IXRemotePreferenceCallback;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public class LSPosedRemotePreference implements SharedPreferences {
|
public class LSPosedRemotePreferences implements SharedPreferences {
|
||||||
|
|
||||||
private final Map<String, Object> mMap = new ConcurrentHashMap<>();
|
private final Map<String, Object> mMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
private static final Object CONTENT = new Object();
|
private static final Object CONTENT = new Object();
|
||||||
final WeakHashMap<OnSharedPreferenceChangeListener, Object> mListeners = new WeakHashMap<>();
|
final WeakHashMap<OnSharedPreferenceChangeListener, Object> mListeners = new WeakHashMap<>();
|
||||||
|
|
||||||
IXRemotePreferenceCallback callback = new IXRemotePreferenceCallback.Stub() {
|
IRemotePreferenceCallback callback = new IRemotePreferenceCallback.Stub() {
|
||||||
@Override
|
@Override
|
||||||
synchronized public void onUpdate(Bundle bundle) {
|
synchronized public void onUpdate(Bundle bundle) {
|
||||||
if (bundle.containsKey("map"))
|
if (bundle.containsKey("map"))
|
||||||
|
|
@ -33,18 +32,16 @@ public class LSPosedRemotePreference implements SharedPreferences {
|
||||||
if (bundle.containsKey("diff")) {
|
if (bundle.containsKey("diff")) {
|
||||||
for (var key : bundle.getStringArrayList("diff")) {
|
for (var key : bundle.getStringArrayList("diff")) {
|
||||||
synchronized (mListeners) {
|
synchronized (mListeners) {
|
||||||
mListeners.forEach((listener, __) -> {
|
mListeners.forEach((listener, __) -> listener.onSharedPreferenceChanged(LSPosedRemotePreferences.this, key));
|
||||||
listener.onSharedPreferenceChanged(LSPosedRemotePreference.this, key);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public LSPosedRemotePreference(String packageName, int userId, String group) {
|
public LSPosedRemotePreferences(String packageName, int userId, String group) {
|
||||||
try {
|
try {
|
||||||
Bundle output = serviceClient.requestRemotePreference(packageName, userId, group, callback.asBinder());
|
Bundle output = serviceClient.requestRemotePreferences(packageName, userId, group, callback.asBinder());
|
||||||
callback.onUpdate(output);
|
callback.onUpdate(output);
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
XposedBridge.log(e);
|
XposedBridge.log(e);
|
||||||
|
|
@ -143,7 +143,7 @@ public class LSPApplicationService extends ILSPApplicationService.Stub {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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();
|
ensureRegistered();
|
||||||
// TODO: Handle callback
|
// TODO: Handle callback
|
||||||
var bundle = new Bundle();
|
var bundle = new Bundle();
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package org.lsposed.lspd.impl;
|
||||||
|
|
||||||
|
interface IRemotePreferenceCallback {
|
||||||
|
oneway void onUpdate(in Bundle map);
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,7 @@ interface ILSPApplicationService {
|
||||||
|
|
||||||
String getPrefsPath(String packageName);
|
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);
|
ParcelFileDescriptor requestInjectedManagerBinder(out List<IBinder> binder);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue