mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-06-16 22:01:14 +00:00
Add predictive back support to HelpActivity
This commit is contained in:
@@ -2,9 +2,12 @@ package com.limelight;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.webkit.WebView;
|
import android.webkit.WebView;
|
||||||
import android.webkit.WebViewClient;
|
import android.webkit.WebViewClient;
|
||||||
|
import android.window.OnBackInvokedCallback;
|
||||||
|
import android.window.OnBackInvokedDispatcher;
|
||||||
|
|
||||||
import com.limelight.utils.SpinnerDialog;
|
import com.limelight.utils.SpinnerDialog;
|
||||||
|
|
||||||
@@ -13,10 +16,26 @@ public class HelpActivity extends Activity {
|
|||||||
private SpinnerDialog loadingDialog;
|
private SpinnerDialog loadingDialog;
|
||||||
private WebView webView;
|
private WebView webView;
|
||||||
|
|
||||||
|
private boolean backCallbackRegistered;
|
||||||
|
private OnBackInvokedCallback onBackInvokedCallback;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
onBackInvokedCallback = new OnBackInvokedCallback() {
|
||||||
|
@Override
|
||||||
|
public void onBackInvoked() {
|
||||||
|
// We should always be able to go back because we unregister our callback
|
||||||
|
// when we can't go back. Nonetheless, we will still check anyway.
|
||||||
|
if (webView.canGoBack()) {
|
||||||
|
webView.goBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
webView = new WebView(this);
|
webView = new WebView(this);
|
||||||
setContentView(webView);
|
setContentView(webView);
|
||||||
|
|
||||||
@@ -39,6 +58,8 @@ public class HelpActivity extends Activity {
|
|||||||
getResources().getString(R.string.help_loading_title),
|
getResources().getString(R.string.help_loading_title),
|
||||||
getResources().getString(R.string.help_loading_msg), false);
|
getResources().getString(R.string.help_loading_msg), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshBackDispatchState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -47,6 +68,8 @@ public class HelpActivity extends Activity {
|
|||||||
loadingDialog.dismiss();
|
loadingDialog.dismiss();
|
||||||
loadingDialog = null;
|
loadingDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refreshBackDispatchState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -59,6 +82,31 @@ public class HelpActivity extends Activity {
|
|||||||
webView.loadUrl(getIntent().getData().toString());
|
webView.loadUrl(getIntent().getData().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void refreshBackDispatchState() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
if (webView.canGoBack() && !backCallbackRegistered) {
|
||||||
|
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
||||||
|
OnBackInvokedDispatcher.PRIORITY_DEFAULT, onBackInvokedCallback);
|
||||||
|
backCallbackRegistered = true;
|
||||||
|
}
|
||||||
|
else if (!webView.canGoBack() && backCallbackRegistered) {
|
||||||
|
getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(onBackInvokedCallback);
|
||||||
|
backCallbackRegistered = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDestroy() {
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
|
if (backCallbackRegistered) {
|
||||||
|
getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(onBackInvokedCallback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
// Back goes back through the WebView history
|
// Back goes back through the WebView history
|
||||||
|
|||||||
Reference in New Issue
Block a user