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 @@ - - - - -