diff --git a/app/build.gradle b/app/build.gradle
index cf92e352f..4efe414de 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -76,6 +76,27 @@ dependencies {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
+
+ productFlavors {
+ kiwix {
+ buildConfigField "boolean", "IS_CUSTOM_APP", "false"
+ buildConfigField "boolean", "HAS_EMBEDDED_ZIM", "false"
+ buildConfigField "String", "ZIM_FILE_NAME", "\"\""
+ buildConfigField "long", "ZIM_FILE_SIZE", "0"
+ buildConfigField "int", "CONTENT_VERSION_CODE", "0"
+ buildConfigField "String", "ENFORCED_LANG", "\"\""
+ }
+ custom {
+ applicationId "org.kiwix.kiwixcustomtest"
+ buildConfigField "boolean", "IS_CUSTOM_APP", "true"
+ buildConfigField "boolean", "HAS_EMBEDDED_ZIM", "false"
+ buildConfigField "String", "ZIM_FILE_NAME", "\"\""
+ buildConfigField "long", "ZIM_FILE_SIZE", "0"
+ buildConfigField "int", "CONTENT_VERSION_CODE", "0"
+ buildConfigField "String", "ENFORCED_LANG", "\"\""
+ }
+ }
+
lintOptions {
abortOnError false
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 61c61480a..7a6c81c5e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -150,7 +150,7 @@
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java
index 7f66c6875..3f12b7ca4 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java
+++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java
@@ -85,7 +85,6 @@ import org.json.JSONArray;
import org.kiwix.kiwixmobile.database.BookmarksDao;
import org.kiwix.kiwixmobile.database.KiwixDatabase;
import org.kiwix.kiwixmobile.di.components.ApplicationComponent;
-import org.kiwix.kiwixmobile.settings.Constants;
import org.kiwix.kiwixmobile.settings.KiwixSettingsActivity;
import org.kiwix.kiwixmobile.utils.DimenUtils;
import org.kiwix.kiwixmobile.utils.DocumentParser;
@@ -864,7 +863,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
public boolean openZimFile(File file, boolean clearHistory) {
- if (file.canRead() || Build.VERSION.SDK_INT < 19 || (Constants.IS_CUSTOM_APP
+ if (file.canRead() || Build.VERSION.SDK_INT < 19 || (BuildConfig.IS_CUSTOM_APP
&& Build.VERSION.SDK_INT != 23)) {
if (file.exists()) {
if (ZimContentProvider.setZimFile(file.getAbsolutePath()) != null) {
@@ -906,7 +905,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
ActivityCompat.requestPermissions(this,
new String[] { Manifest.permission.READ_EXTERNAL_STORAGE },
KiwixMobileActivity.REQUEST_STORAGE_PERMISSION);
- if (Constants.IS_CUSTOM_APP && Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
+ if (BuildConfig.IS_CUSTOM_APP && Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
Toast.makeText(this, getResources().getString(R.string.request_storage_custom), Toast.LENGTH_LONG)
.show();
} else {
@@ -1403,7 +1402,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
inflater.inflate(R.menu.menu_main, menu);
this.menu = menu;
StyleMenuButtons(menu);
- if (Constants.IS_CUSTOM_APP) {
+ if (BuildConfig.IS_CUSTOM_APP) {
menu.findItem(R.id.menu_help).setVisible(false);
}
@@ -1599,22 +1598,22 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
// fits better normal android behavior if after closing app ("back" button) state is not maintained.
} else {
- if (Constants.IS_CUSTOM_APP) {
+ if (BuildConfig.IS_CUSTOM_APP) {
Log.d(TAG_KIWIX, "Kiwix Custom App starting for the first time. Check Companion ZIM.");
String currentLocaleCode = Locale.getDefault().toString();
// Custom App recommends to start off a specific language
- if (Constants.CUSTOM_APP_ENFORCED_LANG.length() > 0 && !Constants.CUSTOM_APP_ENFORCED_LANG
+ if (BuildConfig.ENFORCED_LANG.length() > 0 && !BuildConfig.ENFORCED_LANG
.equals(currentLocaleCode)) {
// change the locale machinery
- LanguageUtils.handleLocaleChange(this, Constants.CUSTOM_APP_ENFORCED_LANG);
+ LanguageUtils.handleLocaleChange(this, BuildConfig.ENFORCED_LANG);
// save new locale into preferences for next startup
SharedPreferences sharedPreferences =
PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedPreferences.edit();
- editor.putString("pref_language_chooser", Constants.CUSTOM_APP_ENFORCED_LANG);
+ editor.putString("pref_language_chooser", BuildConfig.ENFORCED_LANG);
editor.apply();
// restart activity for new locale to take effect
@@ -1624,22 +1623,22 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
}
String filePath = "";
- if (Constants.CUSTOM_APP_HAS_EMBEDDED_ZIM) {
+ if (BuildConfig.HAS_EMBEDDED_ZIM) {
String appPath = getPackageResourcePath();
File libDir = new File(appPath.substring(0, appPath.lastIndexOf("/")) + "/lib/");
if (libDir.exists() && libDir.listFiles().length > 0) {
- filePath = libDir.listFiles()[0].getPath() + "/" + Constants.CUSTOM_APP_ZIM_FILE_NAME;
+ filePath = libDir.listFiles()[0].getPath() + "/" + BuildConfig.ZIM_FILE_NAME;
}
if (filePath.isEmpty() || !new File(filePath).exists()) {
- filePath = String.format("/data/data/%s/lib/%s", Constants.CUSTOM_APP_ID,
- Constants.CUSTOM_APP_ZIM_FILE_NAME);
+ filePath = String.format("/data/data/%s/lib/%s", BuildConfig.APPLICATION_ID,
+ BuildConfig.ZIM_FILE_NAME);
}
} else {
String fileName = FileUtils.getExpansionAPKFileName(true);
filePath = FileUtils.generateSaveFileName(fileName);
}
- if (!FileUtils.doesFileExist(filePath, Constants.CUSTOM_APP_ZIM_FILE_SIZE, false)) {
+ if (!FileUtils.doesFileExist(filePath, BuildConfig.ZIM_FILE_SIZE, false)) {
AlertDialog.Builder zimFileMissingBuilder = new AlertDialog.Builder(this, dialogStyle());
zimFileMissingBuilder.setTitle(R.string.app_name);
@@ -1649,7 +1648,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
zimFileMissingBuilder.setPositiveButton(getString(R.string.go_to_play_store),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
- String market_uri = "market://details?id=" + Constants.CUSTOM_APP_ID;
+ String market_uri = "market://details?id=" + BuildConfig.APPLICATION_ID;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(market_uri));
startActivity(intent);
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixWebViewClient.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixWebViewClient.java
index 4a42666d3..8ea2f19bc 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixWebViewClient.java
+++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixWebViewClient.java
@@ -4,7 +4,6 @@ import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
-import android.view.View;
import android.webkit.MimeTypeMap;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@@ -12,7 +11,6 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.HashMap;
-import org.kiwix.kiwixmobile.settings.Constants;
import org.kiwix.kiwixmobile.utils.StyleUtils;
public class KiwixWebViewClient extends WebViewClient {
@@ -67,13 +65,13 @@ public class KiwixWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
- if ((url.equals("content://org.kiwix.zim.base/null")) && !Constants.IS_CUSTOM_APP) {
+ if ((url.equals("content://" + BuildConfig.APPLICATION_ID + ".zim.base/null")) && !BuildConfig.IS_CUSTOM_APP) {
callback.showHelpPage();
return;
}
if (!url.equals("file:///android_res/raw/help.html")) {
view.removeView(help);
- } else if (!Constants.IS_CUSTOM_APP) {
+ } else if (!BuildConfig.IS_CUSTOM_APP) {
LayoutInflater inflater = LayoutInflater.from(view.getContext());
help = (LinearLayout) inflater.inflate(R.layout.help, null);
help.findViewById(R.id.get_content_card)
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java
index 0887d6018..d0d0c6198 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java
+++ b/app/src/main/java/org/kiwix/kiwixmobile/ZimContentProvider.java
@@ -46,7 +46,7 @@ public class ZimContentProvider extends ContentProvider {
public static final String TAG_KIWIX = "kiwix";
- public static final Uri CONTENT_URI = Uri.parse("content://org.kiwix.zim.base/");
+ public static final Uri CONTENT_URI = Uri.parse("content://" + BuildConfig.APPLICATION_ID + ".zim.base/");
public static final Uri UI_URI = Uri.parse("content://org.kiwix.ui/");
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/Constants.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/Constants.java
deleted file mode 100644
index 84649dd0e..000000000
--- a/app/src/main/java/org/kiwix/kiwixmobile/settings/Constants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.kiwix.kiwixmobile.settings;
-
-public class Constants {
-
- public static final boolean IS_CUSTOM_APP = false;
-
- public static final String CUSTOM_APP_ID = "~package~";
-
- public static final boolean CUSTOM_APP_HAS_EMBEDDED_ZIM = false;
-
- public static final String CUSTOM_APP_ZIM_FILE_NAME = "~zim_name~";
-
- public static final long CUSTOM_APP_ZIM_FILE_SIZE = 0;
-
- public static final String CUSTOM_APP_VERSION_NAME = "~version_name~";
-
- public static final int CUSTOM_APP_VERSION_CODE = 2;
-
- public static final int CUSTOM_APP_CONTENT_VERSION_CODE = 0;
-
- public static final String CUSTOM_APP_WEBSITE = "~website~";
-
- public static final String CUSTOM_APP_EMAIL = "~support_email~";
-
- public static final String CUSTOM_APP_SUPPORT_EMAIL = "~support_email~";
-
- public static final String CUSTOM_APP_ENFORCED_LANG = "";
-}
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java
index 7b87dc60b..f711816cb 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java
+++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java
@@ -44,6 +44,7 @@ import eu.mhutti1.utils.storage.StorageDevice;
import eu.mhutti1.utils.storage.StorageSelectDialog;
import java.io.File;
import java.util.Locale;
+import org.kiwix.kiwixmobile.BuildConfig;
import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.LibraryFragment;
import org.kiwix.kiwixmobile.R;
@@ -137,7 +138,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
- if (Constants.CUSTOM_APP_ENFORCED_LANG.equals("")) {
+ if (BuildConfig.ENFORCED_LANG.equals("")) {
setUpLanguageChooser(PREF_LANG);
} else {
getPreferenceScreen().removePreference(getPrefrence("pref_language"));
@@ -156,7 +157,7 @@ public class KiwixSettingsActivity extends AppCompatActivity {
}
private void setStorage(){
- if (Constants.IS_CUSTOM_APP){
+ if (BuildConfig.IS_CUSTOM_APP){
getPreferenceScreen().removePreference(getPrefrence("pref_storage"));
} else {
if (Environment.isExternalStorageEmulated()) {
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/utils/files/FileUtils.java b/app/src/main/java/org/kiwix/kiwixmobile/utils/files/FileUtils.java
index b3c219a66..509deeeab 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/utils/files/FileUtils.java
+++ b/app/src/main/java/org/kiwix/kiwixmobile/utils/files/FileUtils.java
@@ -13,7 +13,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
-import org.kiwix.kiwixmobile.settings.Constants;
+import org.kiwix.kiwixmobile.BuildConfig;
public class FileUtils {
@@ -79,8 +79,8 @@ public class FileUtils {
* @return String the file name of the expansion file
*/
public static String getExpansionAPKFileName(boolean mainFile) {
- return (mainFile ? "main." : "patch.") + Constants.CUSTOM_APP_CONTENT_VERSION_CODE + "."
- + Constants.CUSTOM_APP_ID + ".obb";
+ return (mainFile ? "main." : "patch.") + BuildConfig.CONTENT_VERSION_CODE + "."
+ + BuildConfig.APPLICATION_ID + ".obb";
}
/**
@@ -93,7 +93,7 @@ public class FileUtils {
static public String getSaveFilePath() {
String obbFolder = File.separator + "Android" + File.separator + "obb" + File.separator;
File root = Environment.getExternalStorageDirectory();
- return root.toString() + obbFolder + Constants.CUSTOM_APP_ID;
+ return root.toString() + obbFolder + BuildConfig.APPLICATION_ID;
}
/**