Improve Andoridacy app integration.

pull/27/head
Fox2Code 4 years ago
parent bc84ad235e
commit 39e015a56d

@ -95,7 +95,13 @@ public enum ActionButtonType {
CONFIG(R.drawable.ic_baseline_app_settings_alt_24) { CONFIG(R.drawable.ic_baseline_app_settings_alt_24) {
@Override @Override
public void doAction(ImageButton button, ModuleHolder moduleHolder) { public void doAction(ImageButton button, ModuleHolder moduleHolder) {
IntentHelper.openConfig(button.getContext(), moduleHolder.getMainModuleConfig()); String config = moduleHolder.getMainModuleConfig();
if (config == null) return;
if (config.startsWith("https://www.androidacy.com/")) {
IntentHelper.openUrlAndroidacy(button.getContext(), config, false);
} else {
IntentHelper.openConfig(button.getContext(), config);
}
} }
}, },
SUPPORT() { SUPPORT() {

@ -17,6 +17,7 @@ public class Constants {
public static final String EXTRA_INSTALL_NO_PATCH = "extra_install_no_patch"; public static final String EXTRA_INSTALL_NO_PATCH = "extra_install_no_patch";
public static final String EXTRA_INSTALL_NO_EXTENSIONS = "extra_install_no_extensions"; public static final String EXTRA_INSTALL_NO_EXTENSIONS = "extra_install_no_extensions";
public static final String EXTRA_INSTALL_TEST_ROOTLESS = "extra_install_test_rootless"; public static final String EXTRA_INSTALL_TEST_ROOTLESS = "extra_install_test_rootless";
public static final String EXTRA_ANDROIDACY_ALLOW_INSTALL = "extra_androidacy_allow_install";
public static final String EXTRA_MARKDOWN_URL = "extra_markdown_url"; public static final String EXTRA_MARKDOWN_URL = "extra_markdown_url";
public static final String EXTRA_MARKDOWN_TITLE = "extra_markdown_title"; public static final String EXTRA_MARKDOWN_TITLE = "extra_markdown_title";
public static final String EXTRA_MARKDOWN_CONFIG = "extra_markdown_config"; public static final String EXTRA_MARKDOWN_CONFIG = "extra_markdown_config";

@ -163,6 +163,9 @@ public final class ModuleHolder implements Comparable<ModuleHolder> {
} }
String config = this.getMainModuleConfig(); String config = this.getMainModuleConfig();
if (config != null) { if (config != null) {
if (config.startsWith("https://www.androidacy.com/")) {
buttonTypeList.add(ActionButtonType.CONFIG);
} else {
String pkg = IntentHelper.getPackageOfConfig(config); String pkg = IntentHelper.getPackageOfConfig(config);
try { try {
context.getPackageManager().getPackageInfo(pkg, 0); context.getPackageManager().getPackageInfo(pkg, 0);
@ -172,6 +175,7 @@ public final class ModuleHolder implements Comparable<ModuleHolder> {
"\" missing for module \"" + this.moduleId + "\""); "\" missing for module \"" + this.moduleId + "\"");
} }
} }
}
ModuleInfo moduleInfo = this.getMainModuleInfo(); ModuleInfo moduleInfo = this.getMainModuleInfo();
if (moduleInfo.support != null) { if (moduleInfo.support != null) {
buttonTypeList.add(ActionButtonType.SUPPORT); buttonTypeList.add(ActionButtonType.SUPPORT);

@ -3,6 +3,7 @@ package com.fox2code.mmm.androidacy;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.webkit.WebResourceRequest; import android.webkit.WebResourceRequest;
import android.webkit.WebSettings; import android.webkit.WebSettings;
@ -12,6 +13,7 @@ import android.webkit.WebViewClient;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.fox2code.mmm.BuildConfig; import com.fox2code.mmm.BuildConfig;
import com.fox2code.mmm.Constants;
import com.fox2code.mmm.MainApplication; import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R; import com.fox2code.mmm.R;
import com.fox2code.mmm.compat.CompatActivity; import com.fox2code.mmm.compat.CompatActivity;
@ -42,6 +44,8 @@ public class AndroidacyActivity extends CompatActivity {
this.forceBackPressed(); this.forceBackPressed();
return; return;
} }
boolean allowInstall = intent.getBooleanExtra(
Constants.EXTRA_ANDROIDACY_ALLOW_INSTALL, false);
this.setContentView(R.layout.webview); this.setContentView(R.layout.webview);
this.hideActionBar(); this.hideActionBar();
this.webView = this.findViewById(R.id.webView); this.webView = this.findViewById(R.id.webView);
@ -49,6 +53,10 @@ public class AndroidacyActivity extends CompatActivity {
webSettings.setUserAgentString(Http.getAndroidacyUA()); webSettings.setUserAgentString(Http.getAndroidacyUA());
webSettings.setDomStorageEnabled(true); webSettings.setDomStorageEnabled(true);
webSettings.setJavaScriptEnabled(true); webSettings.setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Make website follow app theme
webSettings.setForceDark(MainApplication.getINSTANCE().isLightTheme() ?
WebSettings.FORCE_DARK_OFF : WebSettings.FORCE_DARK_ON);
}
this.webView.setWebViewClient(new WebViewClient() { this.webView.setWebViewClient(new WebViewClient() {
@Override @Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
@ -61,7 +69,8 @@ public class AndroidacyActivity extends CompatActivity {
return false; return false;
} }
}); });
this.webView.addJavascriptInterface(new AndroidacyWebAPI(this), "mmm"); this.webView.addJavascriptInterface(
new AndroidacyWebAPI(this, allowInstall), "mmm");
this.webView.loadUrl(uri.toString()); this.webView.loadUrl(uri.toString());
} }

@ -15,9 +15,11 @@ import com.fox2code.mmm.utils.IntentHelper;
public class AndroidacyWebAPI { public class AndroidacyWebAPI {
private static final String TAG = "AndroidacyWebAPI"; private static final String TAG = "AndroidacyWebAPI";
private final AndroidacyActivity activity; private final AndroidacyActivity activity;
private final boolean allowInstall;
public AndroidacyWebAPI(AndroidacyActivity activity) { public AndroidacyWebAPI(AndroidacyActivity activity, boolean allowInstall) {
this.activity = activity; this.activity = activity;
this.allowInstall = allowInstall;
} }
@JavascriptInterface @JavascriptInterface
@ -61,7 +63,7 @@ public class AndroidacyWebAPI {
*/ */
@JavascriptInterface @JavascriptInterface
public boolean canInstall() { public boolean canInstall() {
return InstallerInitializer.peekMagiskPath() != null && return this.allowInstall && this.hasRoot() &&
!MainApplication.isShowcaseMode(); !MainApplication.isShowcaseMode();
} }
@ -70,8 +72,8 @@ public class AndroidacyWebAPI {
*/ */
@JavascriptInterface @JavascriptInterface
public void install(String moduleUrl, String installTitle,String checksum) { public void install(String moduleUrl, String installTitle,String checksum) {
if (MainApplication.isShowcaseMode() || if (!this.allowInstall || !this.hasRoot() ||
InstallerInitializer.peekMagiskPath() == null) { MainApplication.isShowcaseMode()) {
// With lockdown mode enabled or lack of root, install should not have any effect // With lockdown mode enabled or lack of root, install should not have any effect
return; return;
} }

@ -124,7 +124,7 @@ public class SettingsActivity extends CompatActivity {
debugPref.setVisible(true); debugPref.setVisible(true);
debugPref.setOnPreferenceClickListener(preference -> { debugPref.setOnPreferenceClickListener(preference -> {
IntentHelper.openUrlAndroidacy(this.getContext(), IntentHelper.openUrlAndroidacy(this.getContext(),
"https://www.androidacy.com/modules-repo"); "https://www.androidacy.com/modules-repo", true);
return true; return true;
}); });
} }
@ -184,7 +184,12 @@ public class SettingsActivity extends CompatActivity {
preference = findPreference(preferenceName + "_website"); preference = findPreference(preferenceName + "_website");
if (preference != null && homepage != null) { if (preference != null && homepage != null) {
preference.setOnPreferenceClickListener(p -> { preference.setOnPreferenceClickListener(p -> {
if (homepage.startsWith("https://www.androidacy.com/")) {
IntentHelper.openUrlAndroidacy(
getCompatActivity(this), homepage, true);
} else {
IntentHelper.openUrl(getCompatActivity(this), homepage); IntentHelper.openUrl(getCompatActivity(this), homepage);
}
return true; return true;
}); });
} }
@ -198,7 +203,12 @@ public class SettingsActivity extends CompatActivity {
preference = findPreference(preferenceName + "_submit"); preference = findPreference(preferenceName + "_submit");
if (preference != null && submissionUrl != null) { if (preference != null && submissionUrl != null) {
preference.setOnPreferenceClickListener(p -> { preference.setOnPreferenceClickListener(p -> {
if (submissionUrl.startsWith("https://www.androidacy.com/")) {
IntentHelper.openUrlAndroidacy(
getCompatActivity(this), submissionUrl, true);
} else {
IntentHelper.openUrl(getCompatActivity(this), submissionUrl); IntentHelper.openUrl(getCompatActivity(this), submissionUrl);
}
return true; return true;
}); });
} }

@ -45,12 +45,13 @@ public class IntentHelper {
} }
} }
public static void openUrlAndroidacy(Context context, String url) { public static void openUrlAndroidacy(Context context, String url,boolean allowInstall) {
Uri uri = Uri.parse(url); Uri uri = Uri.parse(url);
try { try {
Intent myIntent = new Intent( Intent myIntent = new Intent(
Constants.INTENT_ANDROIDACY_INTERNAL, Constants.INTENT_ANDROIDACY_INTERNAL,
uri, context, AndroidacyActivity.class); uri, context, AndroidacyActivity.class);
myIntent.putExtra(Constants.EXTRA_ANDROIDACY_ALLOW_INSTALL, allowInstall);
MainApplication.addSecret(myIntent); MainApplication.addSecret(myIntent);
context.startActivity(myIntent); context.startActivity(myIntent);
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {

Loading…
Cancel
Save