diff --git a/app/src/main/java/com/fox2code/mmm/CrashHandler.java b/app/src/main/java/com/fox2code/mmm/CrashHandler.java index 80d698b..9801642 100644 --- a/app/src/main/java/com/fox2code/mmm/CrashHandler.java +++ b/app/src/main/java/com/fox2code/mmm/CrashHandler.java @@ -3,12 +3,15 @@ package com.fox2code.mmm; import android.annotation.SuppressLint; import android.content.ClipboardManager; import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; import android.view.View; +import android.webkit.WebView; import android.widget.EditText; import android.widget.Toast; import com.fox2code.foxcompat.app.FoxActivity; +import com.fox2code.foxcompat.app.FoxApplication; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.textview.MaterialTextView; @@ -33,6 +36,10 @@ public class CrashHandler extends FoxActivity { Timber.d("CrashHandler.onCreate: intent=%s", getIntent()); super.onCreate(savedInstanceState); setContentView(R.layout.activity_crash_handler); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // per process webview data dir + WebView.setDataDirectorySuffix(FoxApplication.getProcessName()); + } // set crash_details MaterialTextView to the exception passed in the intent or unknown if null // convert stacktrace from array to string, and pretty print it (first line is the exception, the rest is the stacktrace, with each line indented by 4 spaces) MaterialTextView crashDetails = findViewById(R.id.crash_details); diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java index b0a079e..028078d 100644 --- a/app/src/main/java/com/fox2code/mmm/MainActivity.java +++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java @@ -22,6 +22,7 @@ import android.util.TypedValue; import android.view.View; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; +import android.webkit.WebView; import android.widget.CheckBox; import android.widget.Toast; @@ -37,6 +38,7 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.fox2code.foxcompat.app.FoxActivity; +import com.fox2code.foxcompat.app.FoxApplication; import com.fox2code.foxcompat.view.FoxDisplay; import com.fox2code.mmm.background.BackgroundUpdateChecker; import com.fox2code.mmm.installer.InstallerInitializer; @@ -129,6 +131,10 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe } BackgroundUpdateChecker.onMainActivityCreate(this); super.onCreate(savedInstanceState); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // per process webview data dir + WebView.setDataDirectorySuffix(FoxApplication.getProcessName()); + } if (!isOfficial) { Timber.w("You may be running an untrusted build."); // Show a toast to warn the user diff --git a/app/src/main/java/com/fox2code/mmm/UpdateActivity.java b/app/src/main/java/com/fox2code/mmm/UpdateActivity.java index 41af9cb..f3459c9 100644 --- a/app/src/main/java/com/fox2code/mmm/UpdateActivity.java +++ b/app/src/main/java/com/fox2code/mmm/UpdateActivity.java @@ -6,10 +6,12 @@ import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.webkit.WebView; import androidx.core.content.FileProvider; import com.fox2code.foxcompat.app.FoxActivity; +import com.fox2code.foxcompat.app.FoxApplication; import com.fox2code.mmm.utils.io.Http; import com.google.android.material.button.MaterialButton; import com.google.android.material.progressindicator.LinearProgressIndicator; @@ -34,6 +36,10 @@ public class UpdateActivity extends FoxActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_update); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // per process webview data dir + WebView.setDataDirectorySuffix(FoxApplication.getProcessName()); + } // Get the progress bar and make it indeterminate for now LinearProgressIndicator progressIndicator = findViewById(R.id.update_progress); progressIndicator.setIndeterminate(true); diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java index dcad30c..b6a85ee 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java @@ -5,9 +5,11 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.view.View; import android.webkit.ConsoleMessage; +import android.webkit.CookieManager; import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebResourceRequest; @@ -27,6 +29,7 @@ import androidx.webkit.WebViewClientCompat; import androidx.webkit.WebViewFeature; import com.fox2code.foxcompat.app.FoxActivity; +import com.fox2code.foxcompat.app.FoxApplication; import com.fox2code.mmm.BuildConfig; import com.fox2code.mmm.Constants; import com.fox2code.mmm.MainApplication; @@ -71,6 +74,10 @@ public final class AndroidacyActivity extends FoxActivity { protected void onCreate(@Nullable Bundle savedInstanceState) { this.moduleFile = new File(this.getCacheDir(), "module.zip"); super.onCreate(savedInstanceState); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // per process webview data dir + WebView.setDataDirectorySuffix(FoxApplication.getProcessName()); + } Intent intent = this.getIntent(); Uri uri; if (!MainApplication.checkSecret(intent) || (uri = intent.getData()) == null) { @@ -144,6 +151,9 @@ public final class AndroidacyActivity extends FoxActivity { this.webView = this.findViewById(R.id.webView); WebSettings webSettings = this.webView.getSettings(); webSettings.setUserAgentString(Http.getAndroidacyUA()); + CookieManager cookieManager = CookieManager.getInstance(); + cookieManager.setAcceptCookie(true); + cookieManager.setAcceptThirdPartyCookies(this.webView, true); webSettings.setDomStorageEnabled(true); webSettings.setJavaScriptEnabled(true); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);