diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4f9233ff6..fab8db499 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,9 +24,6 @@
android:launchMode="singleTop"
android:theme="@style/KiwixTheme.Launcher"
android:windowSoftInputMode="adjustPan">
-
diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
index 89f11a865..2d46a2dff 100644
--- a/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
+++ b/app/src/main/java/org/kiwix/kiwixmobile/main/KiwixMainActivity.kt
@@ -19,7 +19,10 @@
package org.kiwix.kiwixmobile.main
import android.content.Intent
+import android.content.pm.ShortcutInfo
+import android.content.pm.ShortcutManager
import android.content.res.Configuration
+import android.graphics.drawable.Icon
import android.os.Bundle
import android.os.Handler
import android.os.Looper
@@ -36,11 +39,13 @@ import com.google.android.material.navigation.NavigationView
import eu.mhutti1.utils.storage.StorageDeviceUtils
import org.kiwix.kiwixmobile.BuildConfig
import org.kiwix.kiwixmobile.R
+import org.kiwix.kiwixmobile.core.R.drawable
import org.kiwix.kiwixmobile.core.R.mipmap
import org.kiwix.kiwixmobile.core.R.string
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
import org.kiwix.kiwixmobile.core.dao.NewBookDao
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DOWNLOAD_NOTIFICATION_TITLE
+import org.kiwix.kiwixmobile.core.main.ACTION_NEW_TAB
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.utils.LanguageUtils.Companion.handleLocaleChange
import org.kiwix.kiwixmobile.databinding.ActivityKiwixMainBinding
@@ -49,6 +54,7 @@ import org.kiwix.kiwixmobile.nav.destination.reader.KiwixReaderFragmentDirection
import javax.inject.Inject
const val NAVIGATE_TO_ZIM_HOST_FRAGMENT = "navigate_to_zim_host_fragment"
+const val ACTION_GET_CONTENT = "GET_CONTENT"
class KiwixMainActivity : CoreMainActivity() {
private var actionMode: ActionMode? = null
@@ -230,4 +236,35 @@ class KiwixMainActivity : CoreMainActivity() {
}
override fun getIconResId() = mipmap.ic_launcher
+
+ override fun createApplicationShortcuts() {
+ val shortcutManager = getSystemService(ShortcutManager::class.java)
+
+ // Create a shortcut for opening the "New tab"
+ val newTabShortcut = ShortcutInfo.Builder(this, "new_tab")
+ .setShortLabel(getString(string.new_tab_shortcut_label))
+ .setLongLabel(getString(string.new_tab_shortcut_label))
+ .setIcon(Icon.createWithResource(this, drawable.ic_shortcut_new_tab))
+ .setDisabledMessage(getString(string.shortcut_disabled_message))
+ .setIntent(
+ Intent(this, KiwixMainActivity::class.java).apply {
+ action = ACTION_NEW_TAB
+ }
+ )
+ .build()
+
+ // create a shortCut for opening the online fragment.
+ val getContentShortcut = ShortcutInfo.Builder(this, "get_content")
+ .setShortLabel(getString(string.get_content_shortcut_label))
+ .setLongLabel(getString(string.get_content_shortcut_label))
+ .setIcon(Icon.createWithResource(this, drawable.ic_shortcut_get_content))
+ .setDisabledMessage(getString(string.shortcut_disabled_message))
+ .setIntent(
+ Intent(this, KiwixMainActivity::class.java).apply {
+ action = ACTION_GET_CONTENT
+ }
+ )
+ .build()
+ shortcutManager.dynamicShortcuts = listOf(newTabShortcut, getContentShortcut)
+ }
}
diff --git a/app/src/main/res/xml-v25/shortcuts.xml b/app/src/main/res/xml-v25/shortcuts.xml
deleted file mode 100644
index b23b1d197..000000000
--- a/app/src/main/res/xml-v25/shortcuts.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index f848bdd2e..f18ecc03a 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -22,6 +22,7 @@
tools:targetApi="s" />
+
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
index 5d9e709c7..b3b0598b1 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreMainActivity.kt
@@ -74,6 +74,7 @@ const val SHOULD_OPEN_IN_NEW_TAB = "shouldOpenInNewTab"
const val FIND_IN_PAGE_SEARCH_STRING = "findInPageSearchString"
const val ZIM_FILE_URI_KEY = "zimFileUri"
const val KIWIX_INTERNAL_ERROR = 10
+const val ACTION_NEW_TAB = "NEW_TAB"
abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
@@ -139,6 +140,7 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
}
downloadManagerBroadcastReceiver.let(::registerReceiver)
downloadNotificationActionsReceiver.let(::registerReceiver)
+ createApplicationShortcuts()
}
@Suppress("DEPRECATION")
@@ -421,4 +423,5 @@ abstract class CoreMainActivity : BaseActivity(), WebViewProvider {
protected abstract fun getIconResId(): Int
abstract val readerFragmentResId: Int
+ abstract fun createApplicationShortcuts()
}
diff --git a/custom/src/main/AndroidManifest.xml b/custom/src/main/AndroidManifest.xml
index 56a8462a9..684c446ac 100644
--- a/custom/src/main/AndroidManifest.xml
+++ b/custom/src/main/AndroidManifest.xml
@@ -16,9 +16,6 @@
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan"
android:exported="true">
-
diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
index 792a188b3..7d6cb4a6a 100644
--- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
+++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomMainActivity.kt
@@ -18,6 +18,10 @@
package org.kiwix.kiwixmobile.custom.main
+import android.content.Intent
+import android.content.pm.ShortcutInfo
+import android.content.pm.ShortcutManager
+import android.graphics.drawable.Icon
import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
@@ -28,9 +32,12 @@ import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.google.android.material.navigation.NavigationView
import org.kiwix.kiwixmobile.core.extensions.browserIntent
+import org.kiwix.kiwixmobile.core.main.ACTION_NEW_TAB
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.custom.BuildConfig
import org.kiwix.kiwixmobile.custom.R
+import org.kiwix.kiwixmobile.core.R.string
+import org.kiwix.kiwixmobile.core.R.drawable
import org.kiwix.kiwixmobile.custom.customActivityComponent
import org.kiwix.kiwixmobile.custom.databinding.ActivityCustomMainBinding
@@ -185,4 +192,21 @@ class CustomMainActivity : CoreMainActivity() {
}
override fun getIconResId() = R.mipmap.ic_launcher
+
+ override fun createApplicationShortcuts() {
+ val shortcutManager = getSystemService(ShortcutManager::class.java)
+ // Create a shortcut for opening the "New tab"
+ val newTabShortcut = ShortcutInfo.Builder(this, "new_tab")
+ .setShortLabel(getString(string.new_tab_shortcut_label))
+ .setLongLabel(getString(string.new_tab_shortcut_label))
+ .setIcon(Icon.createWithResource(this, drawable.ic_shortcut_new_tab))
+ .setDisabledMessage(getString(string.shortcut_disabled_message))
+ .setIntent(
+ Intent(this, CustomMainActivity::class.java).apply {
+ action = ACTION_NEW_TAB
+ }
+ )
+ .build()
+ shortcutManager.dynamicShortcuts = listOf(newTabShortcut)
+ }
}
diff --git a/custom/src/main/res/xml-v25/shortcuts.xml b/custom/src/main/res/xml-v25/shortcuts.xml
deleted file mode 100644
index 1276a4d4c..000000000
--- a/custom/src/main/res/xml-v25/shortcuts.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-