fix: register ToolApp animated back callback
This commit is contained in:
@@ -425,8 +425,12 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
|
||||
var usedAnimation = false;
|
||||
if (android.os.Build.VERSION.SDK_INT >= 34) {
|
||||
try {
|
||||
// 关键:不要只把 Class.forName() 的 Class 对象传给 JavaAdapter。
|
||||
// 在部分 ColorOS/Rhino 组合里这样会被系统识别成普通 OnBackInvokedCallback,log 里表现为 mIsAnimationCallback=false。
|
||||
// 先 forName 预热,再用 Packages.android.window.OnBackAnimationCallback 这个接口对象创建代理,确保 instanceof 命中。
|
||||
var animCls = java.lang.Class.forName("android.window.OnBackAnimationCallback");
|
||||
cb = new JavaAdapter(animCls, {
|
||||
var animIface = Packages.android.window.OnBackAnimationCallback;
|
||||
cb = new JavaAdapter(animIface, {
|
||||
onBackStarted: function(event) { self.applyPanelPredictiveBackProgress(panel, event); },
|
||||
onBackProgressed: function(event) { self.applyPanelPredictiveBackProgress(panel, event); },
|
||||
onBackCancelled: function() { self.resetPanelPredictiveBackVisual(panel); },
|
||||
@@ -441,8 +445,12 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
|
||||
self.handlePanelBack(which, "predictive_back");
|
||||
}
|
||||
});
|
||||
usedAnimation = true;
|
||||
usedAnimation = !!animCls.isInstance(cb);
|
||||
if (!usedAnimation) {
|
||||
safeLog(self.L, 'w', "OnBackAnimationCallback proxy not instance; fallback may show mIsAnimationCallback=false");
|
||||
}
|
||||
} catch (eAnim) {
|
||||
safeLog(self.L, 'w', "create OnBackAnimationCallback fail: " + String(eAnim));
|
||||
cb = null;
|
||||
}
|
||||
}
|
||||
@@ -459,7 +467,13 @@ FloatBallAppWM.prototype.registerPanelPredictiveBack = function(panel, which) {
|
||||
if (!cb) return false;
|
||||
|
||||
var priority = 0;
|
||||
try { priority = android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT; } catch (ePri) { priority = 0; }
|
||||
try {
|
||||
if (String(which || "") === "tool_app" && android.window.OnBackInvokedDispatcher.PRIORITY_OVERLAY !== undefined) {
|
||||
priority = android.window.OnBackInvokedDispatcher.PRIORITY_OVERLAY;
|
||||
} else {
|
||||
priority = android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT;
|
||||
}
|
||||
} catch (ePri) { priority = 0; }
|
||||
dispatcher.registerOnBackInvokedCallback(priority, cb);
|
||||
if (!this.state.panelBackCallbackEntries) this.state.panelBackCallbackEntries = [];
|
||||
this.state.panelBackCallbackEntries.push({ view: panel, dispatcher: dispatcher, callback: cb, which: String(which || ""), animation: usedAnimation });
|
||||
|
||||
@@ -34,8 +34,8 @@
|
||||
"size": 7938
|
||||
},
|
||||
"th_09_animation.js": {
|
||||
"sha256": "5f5e8743438af92238c377d864a8ab54ba0f5c1fb9198e4003f2530ee1fb4bf5",
|
||||
"size": 36684
|
||||
"sha256": "aeaae4c69212000c549d3a5835b4e13efc2665c08b98c76835ead092bab6afc3",
|
||||
"size": 37646
|
||||
},
|
||||
"th_10_shell.js": {
|
||||
"sha256": "0ed793079c2f6ba7d29f4c0d411705cb72419f45f572cbe37ed32ac16527a8bc",
|
||||
@@ -68,5 +68,5 @@
|
||||
},
|
||||
"keyId": "toolhub-targets-2026-rsa3072",
|
||||
"schema": 2,
|
||||
"version": 20260513191013
|
||||
"version": 20260513192204
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
MDFkuupKMa3WOF6k4FEjEUDpEgxCnwNtCPOyqgB62IWvxKNGLcru5te81MGFNGIyfOKd/eq7CJQ+g18iXdOx618qeMKI6cHpUTVPSOOeLsvRijlJp7/mWip5OG2OPOUziiaMNafBLddQRrRHn0siNoWG5hte3SYfUcVLw8SpJTAwjJCoX56MB6E2tkdkv2Beg+76my7LBd0IK5bAms/cj5v5wDGxnj58iJxIgt5JjpW0TZp3OzMLBjmk4uvUm2rqVeoEIoHwrFN87P9TNZ2K8YoR6DskyRhZAvwZd3RCN92UKK7xu8XqY0YeSYFHdcZe8ntMfvt/vDOe5RMWD1VbU0F6l960aYhZx1wH3eU+nQ/zy920ryRjH/S904q9ZLC+S4QDX4u3xKRTUjQVKh9TBE5ZwnAI3PKDt7W1y/tiOE9X5j8cLtvzSySkvrG1SY+pbfKTdonlVAV6QXOSYZRsJp7Gr8MSVQOhJwVz4HoByOI2EiQSbLwxLexuFUJhIKvN
|
||||
ncqYbwM/RAG7BkNXDAmWjUnEsO+Fy4SyYu4LOvH9FgU6kQ2xojzYoKXLL1dmRs7xKCXEfiECFl+qI4+w6X4KETfC3O+N+X8UuhYKgi96WtLp70//7LzU75t8EQx/StPPckzsVD3UluoAdJ4Dv3PYdNSWN39HdQQaqDqT0+3VByRKITCxwmNfcE/oTXA15vIZ+UU01r6zZSTCgIiqofCpsM8PHz0/laQvpNiFxqGRgmFWZUUU1q/U+QFg1lUpu5yU9uESslwW6PiVSIWjqcWPqGVhfIvKgRo/11caKhuKERG78IzT0F/WSXLrmkndh1ItRH7789QLziyMrCQARUlzHkS0qEAChjb+v4Lb7k15dDtkyI7vAwEAykJNY6+WwZ2Xxb77+9ncwNHm2qxubjo6hUZc+CwHbk2JOgKLQSNv/mvUuKfa7pd7rZ+oKtBIEY56OIfYEHMaMt+ZDnU8WcYcuhlZyv3dnUPV28pPwzmlfQcq3TDiSYACZnP3ssa+ESaw
|
||||
|
||||
Reference in New Issue
Block a user