Store callback instances
This commit is contained in:
parent
6e4225960f
commit
7e344e2c71
|
|
@ -14,6 +14,7 @@ import java.io.FileOutputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.WeakHashMap;
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
|
@ -25,10 +26,12 @@ public final class XposedService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final static Map<OnScopeEventListener, IXposedScopeCallback> scopeCallbacks = new WeakHashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback interface for module scope request
|
* Callback interface for module scope request
|
||||||
*/
|
*/
|
||||||
public interface IScopeCallback {
|
public interface OnScopeEventListener {
|
||||||
/**
|
/**
|
||||||
* Callback when the request notification / window prompted
|
* Callback when the request notification / window prompted
|
||||||
*
|
*
|
||||||
|
|
@ -71,32 +74,32 @@ public final class XposedService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private IXposedScopeCallback asInterface() {
|
private IXposedScopeCallback asInterface() {
|
||||||
return new IXposedScopeCallback.Stub() {
|
return scopeCallbacks.computeIfAbsent(this, (listener) -> new IXposedScopeCallback.Stub() {
|
||||||
@Override
|
@Override
|
||||||
public void onScopeRequestPrompted(String packageName) {
|
public void onScopeRequestPrompted(String packageName) {
|
||||||
IScopeCallback.this.onScopeRequestPrompted(packageName);
|
listener.onScopeRequestPrompted(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScopeRequestApproved(String packageName) {
|
public void onScopeRequestApproved(String packageName) {
|
||||||
IScopeCallback.this.onScopeRequestApproved(packageName);
|
listener.onScopeRequestApproved(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScopeRequestDenied(String packageName) {
|
public void onScopeRequestDenied(String packageName) {
|
||||||
IScopeCallback.this.onScopeRequestDenied(packageName);
|
listener.onScopeRequestDenied(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScopeRequestTimeout(String packageName) {
|
public void onScopeRequestTimeout(String packageName) {
|
||||||
IScopeCallback.this.onScopeRequestTimeout(packageName);
|
listener.onScopeRequestTimeout(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onScopeRequestFailed(String packageName, String message) {
|
public void onScopeRequestFailed(String packageName, String message) {
|
||||||
IScopeCallback.this.onScopeRequestFailed(packageName, message);
|
listener.onScopeRequestFailed(packageName, message);
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,7 +260,7 @@ public final class XposedService {
|
||||||
* @param callback Callback to be invoked when the request is completed or error occurred
|
* @param callback Callback to be invoked when the request is completed or error occurred
|
||||||
* @throws ServiceException If the service is dead or error occurred
|
* @throws ServiceException If the service is dead or error occurred
|
||||||
*/
|
*/
|
||||||
public void requestScope(@NonNull String packageName, @NonNull IScopeCallback callback) {
|
public void requestScope(@NonNull String packageName, @NonNull OnScopeEventListener callback) {
|
||||||
try {
|
try {
|
||||||
mService.requestScope(packageName, callback.asInterface());
|
mService.requestScope(packageName, callback.asInterface());
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue