Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Hello, thank you in advance. I really regret this bug; it might occur in MainActivity.java, because the latest WebView version is very sensitive and its security is very strict. I have already replaced the download file but still with the same version because this is just a small bug. If you are lazy to download the file because the size is large, you can modify MainActivity.java yourself.

Here is the file:

\AG APK Builder-win32-x64\resources\base_module\app\src\main\java\com\xxx\yyy\MainActivity.java

Replace all of this:

package com.xxx.yyy;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        WebView webView = new WebView(this);
        WebSettings settings = webView.getSettings();
        // Aktifkan JavaScript
        settings.setJavaScriptEnabled(true);
        // Aktifkan akses file
        settings.setAllowFileAccess(true);
        settings.setDomStorageEnabled(true);
        // Tambahan penting untuk Android 11+ agar WebView bisa load file lokal
        settings.setAllowFileAccessFromFileURLs(true);
        settings.setAllowUniversalAccessFromFileURLs(true);
        // Load index.html dari assets/www
        webView.loadUrl("file:///android_asset/www/index.html");
        setContentView(webView);
    }
}

replace with the legacy version, remember not to duplicate

package com.xxx.yyy; 
import android.os.Bundle;
import android.view.View;
import android.webkit.ConsoleMessage;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    private WebView mWebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ===============================
        // ENABLE WEBVIEW DEBUG (ADB)
        // ===============================
        WebView.setWebContentsDebuggingEnabled(true);
        // ===============================
        // INIT WEBVIEW
        // ===============================
        mWebView = new WebView(this);
        // Fullscreen immersive (RPG safe)
        mWebView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LOW_PROFILE
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        );
        // ===============================
        // WEB SETTINGS (MV & MZ SAFE)
        // ===============================
        WebSettings settings = mWebView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
        settings.setAllowFileAccess(true);
        settings.setAllowContentAccess(true);
        settings.setAllowFileAccessFromFileURLs(true);
        settings.setAllowUniversalAccessFromFileURLs(true);
        settings.setMediaPlaybackRequiresUserGesture(false);
        // Android 9+ (WAJIB untuk local file + JS)
        settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        // CACHE FIX (API BARU)
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);
        // Performance (MZ butuh ini)
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);
        // ===============================
        // WEBVIEW CLIENT
        // ===============================
        mWebView.setWebViewClient(new WebViewClient());
        // ===============================
        // WEBCHROME CLIENT (JS ERROR LOG)
        // ===============================
        mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onConsoleMessage(ConsoleMessage msg) {
                android.util.Log.e(
                        "WEBVIEW",
                        msg.message()
                                + " [Line " + msg.lineNumber()
                                + "] " + msg.sourceId()
                );
                return true;
            }
        });
        setContentView(mWebView);
        // ===============================
        // LOAD RPG MAKER
        // ===============================
        mWebView.loadUrl("file:///android_asset/www/index.html");
    }
    // ===============================
    // KEEP FULLSCREEN
    // ===============================
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus && mWebView != null) {
            mWebView.setSystemUiVisibility(
                    View.SYSTEM_UI_FLAG_LOW_PROFILE
                            | View.SYSTEM_UI_FLAG_FULLSCREEN
                            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            );
        }
    }
    @Override
    protected void onResume() {
        super.onResume();
        if (mWebView != null) {
            mWebView.onResume();
            mWebView.postDelayed(() -> mWebView.requestFocus(), 200);
        }
    }
    @Override
    protected void onPause() {
        if (mWebView != null) {
            mWebView.onPause();
        }
        super.onPause();
    }
}

I hope this can help fix your problem. If your problem isn't resolved, I would like a screenshot of the error from the built APK. Thank you.