diff --git a/SpaccDotWeb.Android/app/.gitignore b/SpaccDotWeb.Android/ExampleApp/.gitignore similarity index 100% rename from SpaccDotWeb.Android/app/.gitignore rename to SpaccDotWeb.Android/ExampleApp/.gitignore diff --git a/SpaccDotWeb.Android/app/build.gradle b/SpaccDotWeb.Android/ExampleApp/build.gradle similarity index 84% rename from SpaccDotWeb.Android/app/build.gradle rename to SpaccDotWeb.Android/ExampleApp/build.gradle index 217bba2..3c0b038 100644 --- a/SpaccDotWeb.Android/app/build.gradle +++ b/SpaccDotWeb.Android/ExampleApp/build.gradle @@ -12,9 +12,8 @@ android { versionCode 1 versionName '1.0' minSdk 1 - //noinspection OldTargetApi - targetSdk 34 - compileSdk 34 + targetSdk 35 + compileSdk 35 } signingConfigs { @@ -42,6 +41,11 @@ android { signingConfig signingConfigs.release } } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } } java { @@ -49,3 +53,7 @@ java { languageVersion = JavaLanguageVersion.of(17) } } + +dependencies { + implementation project(":SpaccWebView") +} \ No newline at end of file diff --git a/SpaccDotWeb.Android/app/src/main/AndroidManifest.xml b/SpaccDotWeb.Android/ExampleApp/src/main/AndroidManifest.xml similarity index 100% rename from SpaccDotWeb.Android/app/src/main/AndroidManifest.xml rename to SpaccDotWeb.Android/ExampleApp/src/main/AndroidManifest.xml diff --git a/SpaccDotWeb.Android/app/src/main/assets/index.html b/SpaccDotWeb.Android/ExampleApp/src/main/assets/index.html similarity index 100% rename from SpaccDotWeb.Android/app/src/main/assets/index.html rename to SpaccDotWeb.Android/ExampleApp/src/main/assets/index.html diff --git a/SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainActivity.java b/SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainActivity.java similarity index 54% rename from SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainActivity.java rename to SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainActivity.java index 502e43f..092c02f 100644 --- a/SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainActivity.java +++ b/SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainActivity.java @@ -13,16 +13,26 @@ import android.view.MenuItem; import android.webkit.WebView; import android.widget.EditText; -import org.eu.spacc.spaccdotweb.android.utils.ApiUtils; -import org.eu.spacc.spaccdotweb.android.helpers.DataMoveHelper; -import org.eu.spacc.spaccdotweb.android.SpaccWebViewActivity; -import org.eu.spacc.spaccdotweb.android.webview.SpaccWebViewClient; +import org.eu.spacc.spaccwebview.android.utils.ApiUtils; +import org.eu.spacc.spaccwebview.android.helpers.DataMoveHelper; +import org.eu.spacc.spaccwebview.android.SpaccWebViewActivity; +import org.eu.spacc.spaccwebview.android.webview.SpaccWebViewClient; public class MainActivity extends SpaccWebViewActivity { private ActionBar actionBar = null; private Menu menu = null; private long pageStartTime = 0; + private void refreshMenu(boolean started) { + if (menu != null) { + menu.findItem(R.id.stop).setVisible(started); + menu.findItem(R.id.reload).setVisible(!started); + menu.findItem(R.id.about_app).setVisible(webView.getConfig().getAboutPage() != null); + menu.findItem(R.id.backwards).setEnabled(webView.canGoBack()); + menu.findItem(R.id.forward).setEnabled(webView.canGoForward()); + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -30,10 +40,9 @@ public class MainActivity extends SpaccWebViewActivity { ApiUtils.apiRun(11, () -> this.actionBar = getActionBar()); - DataMoveHelper.run(this, R.string.exit, R.string.move_app_data, R.string.move_app_data_info); + DataMoveHelper.run(this); this.webView = findViewById(R.id.webview); - this.webView.setStrings(R.string.open_menu, R.string.open_externally_menu, R.string.copy_url_menu); this.webView.setWebViewClient(new SpaccWebViewClient(this) { @SuppressLint("UseRequiresApi") @TargetApi(Build.VERSION_CODES.HONEYCOMB) @@ -41,16 +50,12 @@ public class MainActivity extends SpaccWebViewActivity { public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); pageStartTime = System.currentTimeMillis(); + refreshMenu(true); if (menu != null) { - menu.findItem(R.id.stop).setVisible(true); - menu.findItem(R.id.reload).setVisible(false); menu.findItem(R.id.open_externally).setVisible(!ApiUtils.isInternalUrl(Uri.parse(url))); - menu.findItem(R.id.about_app).setVisible(webView.getConfig().getAboutPage() != null); - menu.findItem(R.id.backwards).setEnabled(webView.canGoBack()); - menu.findItem(R.id.forward).setEnabled(webView.canGoForward()); } if (actionBar != null) { - actionBar.setSubtitle(R.string.loading); + actionBar.setSubtitle(org.eu.spacc.spaccwebview.android.R.string.loading); } // if (justStarted) { // new Handler().postDelayed(() -> Objects.requireNonNull(getActionBar()).hide(), 3000); @@ -63,10 +68,7 @@ public class MainActivity extends SpaccWebViewActivity { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); - if (menu != null) { - menu.findItem(R.id.stop).setVisible(false); - menu.findItem(R.id.reload).setVisible(true); - } + refreshMenu(false); if (actionBar != null && pageStartTime != 0) { actionBar.setSubtitle("~" + (System.currentTimeMillis() - pageStartTime) + "ms"); } @@ -89,43 +91,33 @@ public class MainActivity extends SpaccWebViewActivity { @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.stop: - this.webView.stopLoading(); - break; - case R.id.reload: - this.webView.reload(); - break; - case R.id.backwards: - this.webView.goBack(); - break; - case R.id.forward: - this.webView.goForward(); - break; - case R.id.copy_url: - ApiUtils.writeToClipboard(this, webView.getUrl()); - break; - case R.id.open_externally: - ApiUtils.openOrShareUrl(this, Uri.parse(webView.getUrl())); - break; - case R.id.exec_script: - EditText scriptText = new EditText(this); - new AlertDialog.Builder(this) - .setTitle(R.string.execute_javascript) - .setView(scriptText) - .setPositiveButton("OK", (dialogInterface, i) -> webView.injectScript(scriptText.getText().toString())) - .setNeutralButton(R.string.cancel, null) - .show(); - break; - case R.id.hide: - actionBar.hide(); - break; - case R.id.exit: - finish(); - break; - case R.id.about_app: - ApiUtils.openOrShareUrl(this, Uri.parse(webView.getConfig().getAboutPage())); - break; + int id = item.getItemId(); + if (id == R.id.stop) { + webView.stopLoading(); + } else if (id == R.id.reload) { + webView.reload(); + } else if (id == R.id.backwards) { + webView.goBack(); + } else if (id == R.id.forward) { + webView.goForward(); + } else if (id == R.id.copy_url) { + ApiUtils.writeToClipboard(this, webView.getUrl()); + } else if (id == R.id.open_externally) { + ApiUtils.openOrShareUrl(this, Uri.parse(webView.getUrl())); + } else if (id == R.id.exec_script) { + EditText scriptText = new EditText(this); + new AlertDialog.Builder(this) + .setTitle(org.eu.spacc.spaccwebview.android.R.string.execute_javascript) + .setView(scriptText) + .setPositiveButton("OK", (dialogInterface, i) -> webView.injectScript(scriptText.getText().toString())) + .setNeutralButton(org.eu.spacc.spaccwebview.android.R.string.cancel, null) + .show(); + } else if (id == R.id.hide) { + actionBar.hide(); + } else if (id == R.id.exit) { + finish(); + } else if (id == R.id.about_app) { + ApiUtils.openOrShareUrl(this, Uri.parse(webView.getConfig().getAboutPage())); } return super.onOptionsItemSelected(item); } diff --git a/SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainApplication.java b/SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainApplication.java similarity index 77% rename from SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainApplication.java rename to SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainApplication.java index de00044..ac74a04 100644 --- a/SpaccDotWeb.Android/app/src/main/java/com/example/spaccwebviewapplication/MainApplication.java +++ b/SpaccDotWeb.Android/ExampleApp/src/main/java/com/example/spaccwebviewapplication/MainApplication.java @@ -1,6 +1,6 @@ package com.example.spaccwebviewapplication; -import org.eu.spacc.spaccdotweb.android.SpaccWebViewApplication; +import org.eu.spacc.spaccwebview.android.SpaccWebViewApplication; public class MainApplication extends SpaccWebViewApplication { // This proxy class can be left empty, diff --git a/SpaccDotWeb.Android/app/src/main/res/layout/activity_main.xml b/SpaccDotWeb.Android/ExampleApp/src/main/res/layout/activity_main.xml similarity index 84% rename from SpaccDotWeb.Android/app/src/main/res/layout/activity_main.xml rename to SpaccDotWeb.Android/ExampleApp/src/main/res/layout/activity_main.xml index 89a83e7..f6a1b54 100644 --- a/SpaccDotWeb.Android/app/src/main/res/layout/activity_main.xml +++ b/SpaccDotWeb.Android/ExampleApp/src/main/res/layout/activity_main.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> - + + + + + + + + + + + +]> + + SpaccWebView Application + \ No newline at end of file diff --git a/SpaccDotWeb.Android/app/src/main/res/xml/app_config.xml b/SpaccDotWeb.Android/ExampleApp/src/main/res/xml/app_config.xml similarity index 100% rename from SpaccDotWeb.Android/app/src/main/res/xml/app_config.xml rename to SpaccDotWeb.Android/ExampleApp/src/main/res/xml/app_config.xml diff --git a/SpaccDotWeb.Android/app/src/main/res/xml/backup_rules.xml b/SpaccDotWeb.Android/ExampleApp/src/main/res/xml/backup_rules.xml similarity index 100% rename from SpaccDotWeb.Android/app/src/main/res/xml/backup_rules.xml rename to SpaccDotWeb.Android/ExampleApp/src/main/res/xml/backup_rules.xml diff --git a/SpaccDotWeb.Android/app/src/main/res/xml/data_extraction_rules.xml b/SpaccDotWeb.Android/ExampleApp/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from SpaccDotWeb.Android/app/src/main/res/xml/data_extraction_rules.xml rename to SpaccDotWeb.Android/ExampleApp/src/main/res/xml/data_extraction_rules.xml diff --git a/SpaccDotWeb.Android/SpaccWebView/.gitignore b/SpaccDotWeb.Android/SpaccWebView/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/SpaccDotWeb.Android/SpaccWebView/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/SpaccDotWeb.Android/SpaccWebView/build.gradle b/SpaccDotWeb.Android/SpaccWebView/build.gradle new file mode 100644 index 0000000..5560af8 --- /dev/null +++ b/SpaccDotWeb.Android/SpaccWebView/build.gradle @@ -0,0 +1,29 @@ +plugins { + id 'com.android.library' +} + +android { + namespace 'org.eu.spacc.spaccwebview.android' + + defaultConfig { + minSdk 1 + compileSdk 35 + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + } +} + +dependencies { +// testImplementation 'junit:junit:4.13.2' +// androidTestImplementation 'androidx.test.ext:junit:1.2.1' +// androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' +} \ No newline at end of file diff --git a/SpaccDotWeb.Android/SpaccWebView/src/androidTest/java/org/eu/spacc/spaccwebview/android/ExampleInstrumentedTest.java b/SpaccDotWeb.Android/SpaccWebView/src/androidTest/java/org/eu/spacc/spaccwebview/android/ExampleInstrumentedTest.java new file mode 100644 index 0000000..20ac5bb --- /dev/null +++ b/SpaccDotWeb.Android/SpaccWebView/src/androidTest/java/org/eu/spacc/spaccwebview/android/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package org.eu.spacc.spaccwebview.android; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("org.eu.spacc.spaccwebview.android.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/SpaccDotWeb.Android/SpaccWebView/src/main/AndroidManifest.xml b/SpaccDotWeb.Android/SpaccWebView/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a5918e6 --- /dev/null +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Config.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Config.java similarity index 94% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Config.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Config.java index 36e13ed..0172dc3 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Config.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Config.java @@ -1,7 +1,7 @@ -package org.eu.spacc.spaccdotweb.android; +package org.eu.spacc.spaccwebview.android; -import org.eu.spacc.spaccdotweb.android.Constants.*; -import org.eu.spacc.spaccdotweb.android.helpers.ConfigReader; +import org.eu.spacc.spaccwebview.android.Constants.*; +import org.eu.spacc.spaccwebview.android.helpers.ConfigReader; public class Config extends Defaults { private ConfigReader configReader; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Constants.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Constants.java similarity index 81% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Constants.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Constants.java index 254ea35..4179fef 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Constants.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Constants.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android; +package org.eu.spacc.spaccwebview.android; public class Constants { public enum ActivityCodes { UPLOAD_FILE /* , DOWNLOAD_FILE */ } diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Defaults.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Defaults.java similarity index 86% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Defaults.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Defaults.java index 6f1ec75..2844bc3 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/Defaults.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/Defaults.java @@ -1,6 +1,6 @@ -package org.eu.spacc.spaccdotweb.android; +package org.eu.spacc.spaccwebview.android; -import org.eu.spacc.spaccdotweb.android.Constants.*; +import org.eu.spacc.spaccwebview.android.Constants.*; public class Defaults { public static final Boolean ALLOW_JAVASCRIPT = true; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewActivity.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewActivity.java similarity index 94% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewActivity.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewActivity.java index dbe7caf..a253f11 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewActivity.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewActivity.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android; +package org.eu.spacc.spaccwebview.android; import android.annotation.SuppressLint; import android.annotation.TargetApi; @@ -9,8 +9,8 @@ import android.os.Build; import android.webkit.ValueCallback; import java.io.File; -import org.eu.spacc.spaccdotweb.android.webview.SpaccWebChromeClient; -import org.eu.spacc.spaccdotweb.android.webview.SpaccWebView; +import org.eu.spacc.spaccwebview.android.webview.SpaccWebChromeClient; +import org.eu.spacc.spaccwebview.android.webview.SpaccWebView; public class SpaccWebViewActivity extends Activity { protected SpaccWebView webView; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewApplication.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewApplication.java similarity index 87% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewApplication.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewApplication.java index 52e453f..be6fa24 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/SpaccWebViewApplication.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/SpaccWebViewApplication.java @@ -1,7 +1,7 @@ -package org.eu.spacc.spaccdotweb.android; +package org.eu.spacc.spaccwebview.android; import android.app.Application; -import org.eu.spacc.spaccdotweb.android.utils.StorageUtils; +import org.eu.spacc.spaccwebview.android.utils.StorageUtils; import java.io.File; public class SpaccWebViewApplication extends Application { diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/ConfigReader.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/ConfigReader.java similarity index 94% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/ConfigReader.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/ConfigReader.java index af8b86a..b981207 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/ConfigReader.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/ConfigReader.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.helpers; +package org.eu.spacc.spaccwebview.android.helpers; import android.content.Context; import android.content.res.XmlResourceParser; @@ -7,7 +7,7 @@ import java.util.HashMap; import java.util.Map; import org.xmlpull.v1.XmlPullParserException; -import org.eu.spacc.spaccdotweb.android.Constants.*; +import org.eu.spacc.spaccwebview.android.Constants.*; public class ConfigReader { private final Map configData = new HashMap<>(); diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/DataMoveHelper.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/DataMoveHelper.java similarity index 78% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/DataMoveHelper.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/DataMoveHelper.java index 0a56566..93900ed 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/DataMoveHelper.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/DataMoveHelper.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.helpers; +package org.eu.spacc.spaccwebview.android.helpers; import android.app.Activity; import android.app.AlertDialog; @@ -7,13 +7,14 @@ import android.content.Intent; import android.os.Build; import java.io.IOException; -import org.eu.spacc.spaccdotweb.android.Constants; -import org.eu.spacc.spaccdotweb.android.utils.StorageUtils; -import org.eu.spacc.spaccdotweb.android.utils.FileUtils; +import org.eu.spacc.spaccwebview.android.Constants; +import org.eu.spacc.spaccwebview.android.R; +import org.eu.spacc.spaccwebview.android.utils.StorageUtils; +import org.eu.spacc.spaccwebview.android.utils.FileUtils; public class DataMoveHelper { - public static void run(Context context, int labelExit, int dialogTitle, int dialogMessage) { + public static void run(Context context) { SharedPrefHelper sharedPrefHelper = new SharedPrefHelper(context); Constants.DataLocation dataLocationReal = (StorageUtils.isInstalledOnExternalStorage(context) ? Constants.DataLocation.EXTERNAL : Constants.DataLocation.INTERNAL); Integer dataLocationSaved = sharedPrefHelper.getInt("data_location"); @@ -21,10 +22,10 @@ public class DataMoveHelper { sharedPrefHelper.setInt("data_location", dataLocationReal.ordinal()); } else if (!dataLocationSaved.equals(dataLocationReal.ordinal())) { new AlertDialog.Builder(context) - .setTitle(dialogTitle) - .setMessage(dialogMessage) + .setTitle(R.string.move_app_data) + .setMessage(R.string.move_app_data_info) .setCancelable(false) - .setNegativeButton(labelExit, (dialogInterface, i) -> ((Activity)context).finish()) + .setNegativeButton(R.string.exit, (dialogInterface, i) -> ((Activity)context).finish()) .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { // TODO: Check that the storage locations are all present to copy, and implement an error dialog try { diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/SharedPrefHelper.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/SharedPrefHelper.java similarity index 97% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/SharedPrefHelper.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/SharedPrefHelper.java index 7959d42..1d7e17e 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/helpers/SharedPrefHelper.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/helpers/SharedPrefHelper.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.helpers; +package org.eu.spacc.spaccwebview.android.helpers; import android.content.Context; import android.content.SharedPreferences; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/ApiUtils.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/ApiUtils.java similarity index 97% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/ApiUtils.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/ApiUtils.java index 0b45101..90f2398 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/ApiUtils.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/ApiUtils.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.utils; +package org.eu.spacc.spaccwebview.android.utils; import android.content.ActivityNotFoundException; import android.content.Context; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/FileUtils.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/FileUtils.java similarity index 98% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/FileUtils.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/FileUtils.java index 33e1da7..94b6cf8 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/FileUtils.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/FileUtils.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.utils; +package org.eu.spacc.spaccwebview.android.utils; import static android.content.Context.DOWNLOAD_SERVICE; import android.app.DownloadManager; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/StorageUtils.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/StorageUtils.java similarity index 96% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/StorageUtils.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/StorageUtils.java index 0363b30..33cd983 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/utils/StorageUtils.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/utils/StorageUtils.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.utils; +package org.eu.spacc.spaccwebview.android.utils; import android.content.Context; import android.content.pm.ApplicationInfo; @@ -7,7 +7,7 @@ import android.os.Build; import android.os.Environment; import java.io.File; -import org.eu.spacc.spaccdotweb.android.Constants.*; +import org.eu.spacc.spaccwebview.android.Constants.*; public class StorageUtils { diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadDataHolder.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadDataHolder.java similarity index 95% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadDataHolder.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadDataHolder.java index 68d3994..8245d71 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadDataHolder.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadDataHolder.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.webview; +package org.eu.spacc.spaccwebview.android.webview; import android.net.Uri; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadListener.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadListener.java similarity index 91% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadListener.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadListener.java index 4d85aaa..6b23a46 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/DownloadListener.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/DownloadListener.java @@ -1,9 +1,9 @@ -package org.eu.spacc.spaccdotweb.android.webview; +package org.eu.spacc.spaccwebview.android.webview; import android.content.Context; import android.net.Uri; -import org.eu.spacc.spaccdotweb.android.utils.FileUtils; +import org.eu.spacc.spaccwebview.android.utils.FileUtils; public class DownloadListener implements android.webkit.DownloadListener { private final Context context; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebChromeClient.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebChromeClient.java similarity index 88% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebChromeClient.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebChromeClient.java index 072d7a4..410566a 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebChromeClient.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebChromeClient.java @@ -1,7 +1,6 @@ -package org.eu.spacc.spaccdotweb.android.webview; +package org.eu.spacc.spaccwebview.android.webview; import android.annotation.TargetApi; -import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Build; @@ -11,13 +10,12 @@ import android.webkit.WebChromeClient; import android.webkit.WebView; import java.util.ArrayList; -import java.util.Collections; import java.util.concurrent.atomic.AtomicBoolean; -import org.eu.spacc.spaccdotweb.android.Config; -import org.eu.spacc.spaccdotweb.android.Constants; -import org.eu.spacc.spaccdotweb.android.SpaccWebViewActivity; -import org.eu.spacc.spaccdotweb.android.utils.ApiUtils; +import org.eu.spacc.spaccwebview.android.Config; +import org.eu.spacc.spaccwebview.android.Constants; +import org.eu.spacc.spaccwebview.android.SpaccWebViewActivity; +import org.eu.spacc.spaccwebview.android.utils.ApiUtils; public class SpaccWebChromeClient extends WebChromeClient { private final SpaccWebViewActivity activity; diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebView.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebView.java similarity index 87% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebView.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebView.java index 33c0bbc..2b1df33 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebView.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebView.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.webview; +package org.eu.spacc.spaccwebview.android.webview; import android.content.Context; import android.net.Uri; @@ -11,10 +11,11 @@ import android.webkit.WebView; import android.webkit.WebViewClient; import java.util.ArrayList; -import org.eu.spacc.spaccdotweb.android.Config; -import org.eu.spacc.spaccdotweb.android.SpaccWebViewActivity; -import org.eu.spacc.spaccdotweb.android.helpers.ConfigReader; -import org.eu.spacc.spaccdotweb.android.utils.ApiUtils; +import org.eu.spacc.spaccwebview.android.Config; +import org.eu.spacc.spaccwebview.android.R; +import org.eu.spacc.spaccwebview.android.SpaccWebViewActivity; +import org.eu.spacc.spaccwebview.android.helpers.ConfigReader; +import org.eu.spacc.spaccwebview.android.utils.ApiUtils; public class SpaccWebView extends WebView { private Config config; @@ -22,9 +23,6 @@ public class SpaccWebView extends WebView { private SpaccWebViewClient webViewClient; private SpaccWebChromeClient webChromeClient; - private int openString; - private int openExternallyString; - private int copyUrlString; private Boolean isLoaded = false; protected ArrayList scriptQueue = new ArrayList<>(); @@ -48,12 +46,6 @@ public class SpaccWebView extends WebView { this.applyConfig(context); } - public void setStrings(int open, int openExternally, int copyUrl) { - openString = open; - openExternallyString = openExternally; - copyUrlString = copyUrl; - } - @Override public void setWebViewClient(WebViewClient client) { super.setWebViewClient(client); @@ -81,19 +73,19 @@ public class SpaccWebView extends WebView { String href = result.getExtra(); if (href != null) { menu.setHeaderTitle(href); - menu.add(openString).setOnMenuItemClickListener(menuItem -> { + menu.add(R.string.open_menu).setOnMenuItemClickListener(menuItem -> { if (!webViewClient.shouldOverrideUrlLoading(this, href)) { this.loadUrl(href); } return false; }); if (!ApiUtils.isInternalUrl(Uri.parse(href))) { - menu.add(openExternallyString).setOnMenuItemClickListener(menuItem -> { + menu.add(R.string.open_externally_menu).setOnMenuItemClickListener(menuItem -> { ApiUtils.openOrShareUrl(context, Uri.parse(href)); return false; }); } - menu.add(copyUrlString).setOnMenuItemClickListener(menuItem -> { + menu.add(R.string.copy_url_menu).setOnMenuItemClickListener(menuItem -> { ApiUtils.writeToClipboard(context, href); return false; }); diff --git a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebViewClient.java b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebViewClient.java similarity index 91% rename from SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebViewClient.java rename to SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebViewClient.java index 6d8ae5c..3f6041b 100644 --- a/SpaccDotWeb.Android/app/src/main/java/org/eu/spacc/spaccdotweb/android/webview/SpaccWebViewClient.java +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/java/org/eu/spacc/spaccwebview/android/webview/SpaccWebViewClient.java @@ -1,4 +1,4 @@ -package org.eu.spacc.spaccdotweb.android.webview; +package org.eu.spacc.spaccwebview.android.webview; import android.content.Context; import android.content.Intent; @@ -9,9 +9,9 @@ import android.webkit.WebViewClient; import java.net.URISyntaxException; import java.util.Arrays; -import org.eu.spacc.spaccdotweb.android.Config; -import org.eu.spacc.spaccdotweb.android.Constants; -import org.eu.spacc.spaccdotweb.android.utils.ApiUtils; +import org.eu.spacc.spaccwebview.android.Config; +import org.eu.spacc.spaccwebview.android.Constants; +import org.eu.spacc.spaccwebview.android.utils.ApiUtils; public class SpaccWebViewClient extends WebViewClient { private final Context context; diff --git a/SpaccDotWeb.Android/app/src/main/res/values-it/strings.xml b/SpaccDotWeb.Android/SpaccWebView/src/main/res/values-it/strings.xml similarity index 100% rename from SpaccDotWeb.Android/app/src/main/res/values-it/strings.xml rename to SpaccDotWeb.Android/SpaccWebView/src/main/res/values-it/strings.xml diff --git a/SpaccDotWeb.Android/app/src/main/res/values/strings.xml b/SpaccDotWeb.Android/SpaccWebView/src/main/res/values/strings.xml similarity index 93% rename from SpaccDotWeb.Android/app/src/main/res/values/strings.xml rename to SpaccDotWeb.Android/SpaccWebView/src/main/res/values/strings.xml index 2667c29..228e6f0 100644 --- a/SpaccDotWeb.Android/app/src/main/res/values/strings.xml +++ b/SpaccDotWeb.Android/SpaccWebView/src/main/res/values/strings.xml @@ -1,6 +1,5 @@ @@ -14,7 +13,6 @@ ]> - &app_name; &about_app; ℹ️ &about_app; Yes diff --git a/SpaccDotWeb.Android/SpaccWebView/src/test/java/org/eu/spacc/spaccwebview/android/ExampleUnitTest.java b/SpaccDotWeb.Android/SpaccWebView/src/test/java/org/eu/spacc/spaccwebview/android/ExampleUnitTest.java new file mode 100644 index 0000000..8ef8bd5 --- /dev/null +++ b/SpaccDotWeb.Android/SpaccWebView/src/test/java/org/eu/spacc/spaccwebview/android/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package org.eu.spacc.spaccwebview.android; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/SpaccDotWeb.Android/build.gradle b/SpaccDotWeb.Android/build.gradle index 7909b69..fbf349a 100644 --- a/SpaccDotWeb.Android/build.gradle +++ b/SpaccDotWeb.Android/build.gradle @@ -1,4 +1,4 @@ plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false + id 'com.android.application' version '8.4.2' apply false + id 'com.android.library' version '8.4.2' apply false } diff --git a/SpaccDotWeb.Android/gradle/wrapper/gradle-wrapper.properties b/SpaccDotWeb.Android/gradle/wrapper/gradle-wrapper.properties index 1af9e09..75fad2f 100644 --- a/SpaccDotWeb.Android/gradle/wrapper/gradle-wrapper.properties +++ b/SpaccDotWeb.Android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ +#Sun May 25 21:16:27 CEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/SpaccDotWeb.Android/settings.gradle b/SpaccDotWeb.Android/settings.gradle index 07c9759..0b518dd 100644 --- a/SpaccDotWeb.Android/settings.gradle +++ b/SpaccDotWeb.Android/settings.gradle @@ -19,4 +19,5 @@ dependencyResolutionManagement { } rootProject.name = 'SpaccWebView Application' -include ':app' +include ':ExampleApp' +include ':SpaccWebView'