Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 39e015a

Browse files
committed
Improve Andoridacy app integration.
1 parent bc84ad2 commit 39e015a

File tree

7 files changed

+49
-16
lines changed

7 files changed

+49
-16
lines changed

app/src/main/java/com/fox2code/mmm/ActionButtonType.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,13 @@ public boolean doActionLong(ImageButton button, ModuleHolder moduleHolder) {
9595
CONFIG(R.drawable.ic_baseline_app_settings_alt_24) {
9696
@Override
9797
public void doAction(ImageButton button, ModuleHolder moduleHolder) {
98-
IntentHelper.openConfig(button.getContext(), moduleHolder.getMainModuleConfig());
98+
String config = moduleHolder.getMainModuleConfig();
99+
if (config == null) return;
100+
if (config.startsWith("https://www.androidacy.com/")) {
101+
IntentHelper.openUrlAndroidacy(button.getContext(), config, false);
102+
} else {
103+
IntentHelper.openConfig(button.getContext(), config);
104+
}
99105
}
100106
},
101107
SUPPORT() {

app/src/main/java/com/fox2code/mmm/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class Constants {
1717
public static final String EXTRA_INSTALL_NO_PATCH = "extra_install_no_patch";
1818
public static final String EXTRA_INSTALL_NO_EXTENSIONS = "extra_install_no_extensions";
1919
public static final String EXTRA_INSTALL_TEST_ROOTLESS = "extra_install_test_rootless";
20+
public static final String EXTRA_ANDROIDACY_ALLOW_INSTALL = "extra_androidacy_allow_install";
2021
public static final String EXTRA_MARKDOWN_URL = "extra_markdown_url";
2122
public static final String EXTRA_MARKDOWN_TITLE = "extra_markdown_title";
2223
public static final String EXTRA_MARKDOWN_CONFIG = "extra_markdown_config";

app/src/main/java/com/fox2code/mmm/ModuleHolder.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,13 +163,17 @@ public void getButtons(Context context, List<ActionButtonType> buttonTypeList, b
163163
}
164164
String config = this.getMainModuleConfig();
165165
if (config != null) {
166-
String pkg = IntentHelper.getPackageOfConfig(config);
167-
try {
168-
context.getPackageManager().getPackageInfo(pkg, 0);
166+
if (config.startsWith("https://www.androidacy.com/")) {
169167
buttonTypeList.add(ActionButtonType.CONFIG);
170-
} catch (PackageManager.NameNotFoundException e) {
171-
Log.w(TAG, "Config package \"" + pkg +
172-
"\" missing for module \"" + this.moduleId + "\"");
168+
} else {
169+
String pkg = IntentHelper.getPackageOfConfig(config);
170+
try {
171+
context.getPackageManager().getPackageInfo(pkg, 0);
172+
buttonTypeList.add(ActionButtonType.CONFIG);
173+
} catch (PackageManager.NameNotFoundException e) {
174+
Log.w(TAG, "Config package \"" + pkg +
175+
"\" missing for module \"" + this.moduleId + "\"");
176+
}
173177
}
174178
}
175179
ModuleInfo moduleInfo = this.getMainModuleInfo();

app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.annotation.SuppressLint;
44
import android.content.Intent;
55
import android.net.Uri;
6+
import android.os.Build;
67
import android.os.Bundle;
78
import android.webkit.WebResourceRequest;
89
import android.webkit.WebSettings;
@@ -12,6 +13,7 @@
1213
import androidx.annotation.Nullable;
1314

1415
import com.fox2code.mmm.BuildConfig;
16+
import com.fox2code.mmm.Constants;
1517
import com.fox2code.mmm.MainApplication;
1618
import com.fox2code.mmm.R;
1719
import com.fox2code.mmm.compat.CompatActivity;
@@ -42,13 +44,19 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
4244
this.forceBackPressed();
4345
return;
4446
}
47+
boolean allowInstall = intent.getBooleanExtra(
48+
Constants.EXTRA_ANDROIDACY_ALLOW_INSTALL, false);
4549
this.setContentView(R.layout.webview);
4650
this.hideActionBar();
4751
this.webView = this.findViewById(R.id.webView);
4852
WebSettings webSettings = this.webView.getSettings();
4953
webSettings.setUserAgentString(Http.getAndroidacyUA());
5054
webSettings.setDomStorageEnabled(true);
5155
webSettings.setJavaScriptEnabled(true);
56+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Make website follow app theme
57+
webSettings.setForceDark(MainApplication.getINSTANCE().isLightTheme() ?
58+
WebSettings.FORCE_DARK_OFF : WebSettings.FORCE_DARK_ON);
59+
}
5260
this.webView.setWebViewClient(new WebViewClient() {
5361
@Override
5462
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
@@ -61,7 +69,8 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request
6169
return false;
6270
}
6371
});
64-
this.webView.addJavascriptInterface(new AndroidacyWebAPI(this), "mmm");
72+
this.webView.addJavascriptInterface(
73+
new AndroidacyWebAPI(this, allowInstall), "mmm");
6574
this.webView.loadUrl(uri.toString());
6675
}
6776

app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
public class AndroidacyWebAPI {
1616
private static final String TAG = "AndroidacyWebAPI";
1717
private final AndroidacyActivity activity;
18+
private final boolean allowInstall;
1819

19-
public AndroidacyWebAPI(AndroidacyActivity activity) {
20+
public AndroidacyWebAPI(AndroidacyActivity activity, boolean allowInstall) {
2021
this.activity = activity;
22+
this.allowInstall = allowInstall;
2123
}
2224

2325
@JavascriptInterface
@@ -61,7 +63,7 @@ public boolean hasRoot() {
6163
*/
6264
@JavascriptInterface
6365
public boolean canInstall() {
64-
return InstallerInitializer.peekMagiskPath() != null &&
66+
return this.allowInstall && this.hasRoot() &&
6567
!MainApplication.isShowcaseMode();
6668
}
6769

@@ -70,8 +72,8 @@ public boolean canInstall() {
7072
*/
7173
@JavascriptInterface
7274
public void install(String moduleUrl, String installTitle,String checksum) {
73-
if (MainApplication.isShowcaseMode() ||
74-
InstallerInitializer.peekMagiskPath() == null) {
75+
if (!this.allowInstall || !this.hasRoot() ||
76+
MainApplication.isShowcaseMode()) {
7577
// With lockdown mode enabled or lack of root, install should not have any effect
7678
return;
7779
}

app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
124124
debugPref.setVisible(true);
125125
debugPref.setOnPreferenceClickListener(preference -> {
126126
IntentHelper.openUrlAndroidacy(this.getContext(),
127-
"https://www.androidacy.com/modules-repo");
127+
"https://www.androidacy.com/modules-repo", true);
128128
return true;
129129
});
130130
}
@@ -184,7 +184,12 @@ private void setRepoData(String preferenceName, String url,
184184
preference = findPreference(preferenceName + "_website");
185185
if (preference != null && homepage != null) {
186186
preference.setOnPreferenceClickListener(p -> {
187-
IntentHelper.openUrl(getCompatActivity(this), homepage);
187+
if (homepage.startsWith("https://www.androidacy.com/")) {
188+
IntentHelper.openUrlAndroidacy(
189+
getCompatActivity(this), homepage, true);
190+
} else {
191+
IntentHelper.openUrl(getCompatActivity(this), homepage);
192+
}
188193
return true;
189194
});
190195
}
@@ -198,7 +203,12 @@ private void setRepoData(String preferenceName, String url,
198203
preference = findPreference(preferenceName + "_submit");
199204
if (preference != null && submissionUrl != null) {
200205
preference.setOnPreferenceClickListener(p -> {
201-
IntentHelper.openUrl(getCompatActivity(this), submissionUrl);
206+
if (submissionUrl.startsWith("https://www.androidacy.com/")) {
207+
IntentHelper.openUrlAndroidacy(
208+
getCompatActivity(this), submissionUrl, true);
209+
} else {
210+
IntentHelper.openUrl(getCompatActivity(this), submissionUrl);
211+
}
202212
return true;
203213
});
204214
}

app/src/main/java/com/fox2code/mmm/utils/IntentHelper.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ public static void openUrl(Context context, String url) {
4545
}
4646
}
4747

48-
public static void openUrlAndroidacy(Context context, String url) {
48+
public static void openUrlAndroidacy(Context context, String url,boolean allowInstall) {
4949
Uri uri = Uri.parse(url);
5050
try {
5151
Intent myIntent = new Intent(
5252
Constants.INTENT_ANDROIDACY_INTERNAL,
5353
uri, context, AndroidacyActivity.class);
54+
myIntent.putExtra(Constants.EXTRA_ANDROIDACY_ALLOW_INSTALL, allowInstall);
5455
MainApplication.addSecret(myIntent);
5556
context.startActivity(myIntent);
5657
} catch (ActivityNotFoundException e) {

0 commit comments

Comments
 (0)