mirror of
https://github.com/FossifyOrg/Launcher.git
synced 2025-12-24 08:08:58 -05:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0608d59b00 | ||
|
|
f2c4c99255 | ||
|
|
8d7458688e | ||
|
|
41233ba439 | ||
|
|
47dfcc7c6a | ||
|
|
f3f2eb8500 | ||
|
|
598da18f7d | ||
|
|
a09315cb60 | ||
|
|
6905d13a65 | ||
|
|
afc7d0fea3 | ||
|
|
80160e72d1 |
@@ -1,2 +1,2 @@
|
||||
# Auto-generated file. DO NOT EDIT.
|
||||
1.1.2
|
||||
1.1.3
|
||||
|
||||
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
@@ -22,8 +22,6 @@ updates:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/"
|
||||
@@ -37,8 +35,6 @@ updates:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
@@ -48,5 +44,3 @@ updates:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
|
||||
4
.github/workflows/prepare-release-pr.yml
vendored
4
.github/workflows/prepare-release-pr.yml
vendored
@@ -4,6 +4,10 @@ on:
|
||||
repository_dispatch:
|
||||
types: [prepare-release]
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "CHANGELOG.md"
|
||||
|
||||
jobs:
|
||||
call-release-pr:
|
||||
|
||||
15
.github/workflows/validate-fastlane-metadata.yml
vendored
Normal file
15
.github/workflows/validate-fastlane-metadata.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: Fastlane metadata validation
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "fastlane/**"
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- "fastlane/**"
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
uses: FossifyOrg/.github/.github/workflows/validate-fastlane-metadata.yml@main
|
||||
14
CHANGELOG.md
14
CHANGELOG.md
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.1.3] - 2025-06-19
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
|
||||
- Addressed frequently occurring crashes ([#6])
|
||||
|
||||
## [1.1.2] - 2025-06-06
|
||||
|
||||
### Changed
|
||||
@@ -55,7 +65,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
- Initial release
|
||||
|
||||
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...HEAD
|
||||
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.3...HEAD
|
||||
[1.1.3]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...1.1.3
|
||||
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
|
||||
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
|
||||
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
|
||||
@@ -63,6 +74,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0
|
||||
|
||||
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
|
||||
[#6]: https://github.com/FossifyOrg/Launcher/issues/6
|
||||
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
|
||||
[#51]: https://github.com/FossifyOrg/Launcher/issues/51
|
||||
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
|
||||
|
||||
1
CODEOWNERS
Normal file
1
CODEOWNERS
Normal file
@@ -0,0 +1 @@
|
||||
* @naveensingh
|
||||
26
Gemfile.lock
26
Gemfile.lock
@@ -10,26 +10,26 @@ GEM
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.2)
|
||||
aws-partitions (1.1097.0)
|
||||
aws-sdk-core (3.223.0)
|
||||
aws-eventstream (1.4.0)
|
||||
aws-partitions (1.1116.0)
|
||||
aws-sdk-core (3.225.2)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
logger
|
||||
aws-sdk-kms (1.100.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-kms (1.105.0)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.185.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-s3 (1.189.1)
|
||||
aws-sdk-core (~> 3, >= 3.225.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.11.0)
|
||||
aws-sigv4 (1.12.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
base64 (0.3.0)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
@@ -71,7 +71,7 @@ GEM
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.227.2)
|
||||
fastlane (2.228.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -160,7 +160,7 @@ GEM
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.11.3)
|
||||
json (2.12.2)
|
||||
jwt (2.10.1)
|
||||
base64
|
||||
logger (1.7.0)
|
||||
@@ -170,13 +170,13 @@ GEM
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
naturally (2.2.1)
|
||||
naturally (2.3.0)
|
||||
nkf (0.2.0)
|
||||
optparse (0.6.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.2.1)
|
||||
rake (13.3.0)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
|
||||
@@ -2,7 +2,6 @@ package org.fossify.home.activities
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.app.role.RoleManager
|
||||
import android.appwidget.AppWidgetHost
|
||||
@@ -10,7 +9,6 @@ import android.appwidget.AppWidgetManager
|
||||
import android.appwidget.AppWidgetProviderInfo
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.content.pm.LauncherApps
|
||||
@@ -20,7 +18,6 @@ import android.graphics.Bitmap
|
||||
import android.graphics.Color
|
||||
import android.graphics.Rect
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@@ -97,6 +94,7 @@ import org.fossify.home.receivers.LockDeviceAdminReceiver
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
import androidx.core.net.toUri
|
||||
|
||||
class MainActivity : SimpleActivity(), FlingListener {
|
||||
private var mTouchDownX = -1
|
||||
@@ -222,7 +220,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
if (!showIcon) {
|
||||
try {
|
||||
launchersDB.deleteById(it.id!!)
|
||||
} catch (ignored: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
}
|
||||
showIcon
|
||||
@@ -248,7 +246,11 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
|
||||
override fun onStop() {
|
||||
super.onStop()
|
||||
binding.homeScreenGrid.root.appWidgetHost.stopListening()
|
||||
try {
|
||||
binding.homeScreenGrid.root.appWidgetHost.stopListening()
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
wasJustPaused = false
|
||||
}
|
||||
|
||||
@@ -283,19 +285,20 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
}
|
||||
}
|
||||
|
||||
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == Activity.RESULT_OK)
|
||||
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == Activity.RESULT_OK)
|
||||
REQUEST_ALLOW_BINDING_WIDGET -> mActionOnCanBindWidget?.invoke(resultCode == RESULT_OK)
|
||||
REQUEST_CONFIGURE_WIDGET -> mActionOnWidgetConfiguredWidget?.invoke(resultCode == RESULT_OK)
|
||||
REQUEST_CREATE_SHORTCUT -> {
|
||||
if (resultCode == Activity.RESULT_OK && resultData != null) {
|
||||
if (resultCode == RESULT_OK && resultData != null) {
|
||||
val launcherApps =
|
||||
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
if (launcherApps.hasShortcutHostPermission()) {
|
||||
val item = launcherApps.getPinItemRequest(resultData)
|
||||
val shortcutInfo = item?.shortcutInfo ?: return
|
||||
if (item.accept()) {
|
||||
val shortcutId = item.shortcutInfo?.id!!
|
||||
val label = item.shortcutInfo.getLabel()
|
||||
val shortcutId = shortcutInfo.id
|
||||
val label = shortcutInfo.getLabel()
|
||||
val icon = launcherApps.getShortcutBadgedIconDrawable(
|
||||
item.shortcutInfo!!,
|
||||
shortcutInfo,
|
||||
resources.displayMetrics.densityDpi
|
||||
)
|
||||
mActionOnAddShortcut?.invoke(shortcutId, label, icon)
|
||||
@@ -324,7 +327,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
|
||||
try {
|
||||
mDetector.onTouchEvent(event)
|
||||
} catch (ignored: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
when (event.actionMasked) {
|
||||
@@ -436,17 +439,15 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
private fun handleIntentAction(intent: Intent) {
|
||||
if (intent.action == LauncherApps.ACTION_CONFIRM_PIN_SHORTCUT) {
|
||||
val launcherApps =
|
||||
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
val item = launcherApps.getPinItemRequest(intent)
|
||||
if (item.shortcutInfo == null) {
|
||||
return
|
||||
}
|
||||
val shortcutInfo = item?.shortcutInfo ?: return
|
||||
|
||||
ensureBackgroundThread {
|
||||
val shortcutId = item.shortcutInfo?.id!!
|
||||
val label = item.shortcutInfo.getLabel()
|
||||
val shortcutId = shortcutInfo.id
|
||||
val label = shortcutInfo.getLabel()
|
||||
val icon = launcherApps.getShortcutBadgedIconDrawable(
|
||||
item.shortcutInfo!!,
|
||||
shortcutInfo,
|
||||
resources.displayMetrics.densityDpi
|
||||
)
|
||||
val (page, rect) = findFirstEmptyCell()
|
||||
@@ -457,7 +458,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
right = rect.right,
|
||||
bottom = rect.bottom,
|
||||
page = page,
|
||||
packageName = item.shortcutInfo!!.`package`,
|
||||
packageName = shortcutInfo.`package`,
|
||||
activityName = "",
|
||||
title = label,
|
||||
type = ITEM_TYPE_SHORTCUT,
|
||||
@@ -479,7 +480,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
try {
|
||||
item.accept()
|
||||
binding.homeScreenGrid.root.storeAndShowGridItem(gridItem)
|
||||
} catch (ignored: IllegalStateException) {
|
||||
} catch (_: IllegalStateException) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -573,6 +574,8 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
window.navigationBarColor = resources.getColor(R.color.semitransparent_navigation)
|
||||
binding.homeScreenGrid.root.fragmentExpanded()
|
||||
binding.homeScreenGrid.root.hideResizeLines()
|
||||
|
||||
@SuppressLint("AccessibilityFocus")
|
||||
fragment.root.performAccessibilityAction(
|
||||
AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS,
|
||||
null
|
||||
@@ -641,7 +644,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
}
|
||||
|
||||
val devicePolicyManager =
|
||||
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
@@ -694,7 +697,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
val userHandle = android.os.Process.myUserHandle()
|
||||
val shortcutBounds = binding.homeScreenGrid.root.getClickableRect(clickedGridItem)
|
||||
val launcherApps =
|
||||
applicationContext.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
applicationContext.getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
launcherApps.startShortcut(packageName, id, shortcutBounds, null, userHandle)
|
||||
}
|
||||
}
|
||||
@@ -718,7 +721,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
x: Float,
|
||||
y: Float,
|
||||
gridItem: HomeScreenGridItem,
|
||||
isOnAllAppsFragment: Boolean
|
||||
isOnAllAppsFragment: Boolean,
|
||||
) {
|
||||
binding.homeScreenGrid.root.hideResizeLines()
|
||||
mLongPressedIcon = gridItem
|
||||
@@ -813,7 +816,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
Intent(Intent.ACTION_SET_WALLPAPER).apply {
|
||||
startActivity(this)
|
||||
}
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
} catch (_: ActivityNotFoundException) {
|
||||
toast(org.fossify.commons.R.string.no_app_found)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
@@ -883,7 +886,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
}
|
||||
|
||||
private class MyGestureListener(
|
||||
private val flingListener: FlingListener
|
||||
private val flingListener: FlingListener,
|
||||
) : GestureDetector.SimpleOnGestureListener() {
|
||||
override fun onSingleTapUp(event: MotionEvent): Boolean {
|
||||
(flingListener as MainActivity).homeScreenClicked(event.x, event.y)
|
||||
@@ -899,7 +902,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
event1: MotionEvent?,
|
||||
event2: MotionEvent,
|
||||
velocityX: Float,
|
||||
velocityY: Float
|
||||
velocityY: Float,
|
||||
): Boolean {
|
||||
// ignore fling events just after releasing an icon from dragging
|
||||
if (System.currentTimeMillis() - mLastUpEvent < 500L) {
|
||||
@@ -955,7 +958,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
Class.forName("android.app.StatusBarManager")
|
||||
.getMethod("expandNotificationsPanel")
|
||||
.invoke(getSystemService("statusbar"))
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1004,9 +1007,16 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
}
|
||||
|
||||
val label = info.loadLabel(packageManager).toString()
|
||||
val drawable =
|
||||
info.loadIcon(packageManager) ?: getDrawableForPackageName(packageName) ?: continue
|
||||
val placeholderColor = calculateAverageColor(drawable.toBitmap())
|
||||
val drawable = info.loadIcon(packageManager)
|
||||
?: getDrawableForPackageName(packageName)
|
||||
?: continue
|
||||
|
||||
val bitmap = drawable.toBitmap(
|
||||
width = max(drawable.intrinsicWidth, 1),
|
||||
height = max(drawable.intrinsicHeight, 1),
|
||||
config = Bitmap.Config.ARGB_8888
|
||||
)
|
||||
val placeholderColor = calculateAverageColor(bitmap)
|
||||
allApps.add(
|
||||
AppLauncher(
|
||||
id = null,
|
||||
@@ -1015,7 +1025,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
activityName = activityName,
|
||||
order = 0,
|
||||
thumbnailColor = placeholderColor,
|
||||
drawable = drawable.toBitmap().toDrawable(resources)
|
||||
drawable = bitmap.toDrawable(resources)
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -1028,7 +1038,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
val homeScreenGridItems = ArrayList<HomeScreenGridItem>()
|
||||
try {
|
||||
val defaultDialerPackage =
|
||||
(getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
|
||||
(getSystemService(TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
|
||||
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
|
||||
val dialerIcon =
|
||||
HomeScreenGridItem(
|
||||
@@ -1051,7 +1061,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
)
|
||||
homeScreenGridItems.add(dialerIcon)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -1078,11 +1088,11 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
)
|
||||
homeScreenGridItems.add(messengerIcon)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
try {
|
||||
val browserIntent = Intent("android.intent.action.VIEW", Uri.parse("http://"))
|
||||
val browserIntent = Intent(Intent.ACTION_VIEW, "http://".toUri())
|
||||
val resolveInfo =
|
||||
packageManager.resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY)
|
||||
val defaultBrowserPackage = resolveInfo!!.activityInfo.packageName
|
||||
@@ -1108,7 +1118,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
)
|
||||
homeScreenGridItems.add(browserIcon)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -1141,7 +1151,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
homeScreenGridItems.add(storeIcon)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -1171,7 +1181,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
)
|
||||
homeScreenGridItems.add(cameraIcon)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
}
|
||||
|
||||
homeScreenGridItemsDB.insertAll(homeScreenGridItems)
|
||||
@@ -1181,7 +1191,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
appWidgetManager: AppWidgetManager,
|
||||
appWidgetId: Int,
|
||||
appWidgetInfo: AppWidgetProviderInfo,
|
||||
callback: (canBind: Boolean) -> Unit
|
||||
callback: (canBind: Boolean) -> Unit,
|
||||
) {
|
||||
mActionOnCanBindWidget = null
|
||||
val canCreateWidget =
|
||||
@@ -1201,7 +1211,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
fun handleWidgetConfigureScreen(
|
||||
appWidgetHost: AppWidgetHost,
|
||||
appWidgetId: Int,
|
||||
callback: (canBind: Boolean) -> Unit
|
||||
callback: (canBind: Boolean) -> Unit,
|
||||
) {
|
||||
mActionOnWidgetConfiguredWidget = callback
|
||||
appWidgetHost.startAppWidgetConfigureActivityForResult(
|
||||
@@ -1215,7 +1225,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
|
||||
fun handleShorcutCreation(
|
||||
activityInfo: ActivityInfo,
|
||||
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit
|
||||
callback: (shortcutId: String, label: String, icon: Drawable) -> Unit,
|
||||
) {
|
||||
mActionOnAddShortcut = callback
|
||||
val componentName = ComponentName(activityInfo.packageName, activityInfo.name)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
<resources>
|
||||
<string name="app_launcher_name">משגר</string>
|
||||
<string name="launcher_settings">הגדרות משגר</string>
|
||||
<string name="app_info">מידע על האפליקציה</string>
|
||||
<string name="app_info">פרטי אפליקציה</string>
|
||||
<string name="touch_hold_widget">לחיצה ארוכה על הווידג\'ט וגרירה שלו במסך הראשי</string>
|
||||
<string name="uninstall">הסרה</string>
|
||||
<string name="hide_icon">הסתר אייקון</string>
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Покренувач</string>
|
||||
</resources>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Fechar gaveta de aplicativos ao abrir um aplicativo</string>
|
||||
<string name="home_screen_settings">Tela inicial</string>
|
||||
<string name="widget_too_big">O widget é muito grande para o tamanho atual da tela inicial</string>
|
||||
<string name="app_launcher_name">Fossify - Launcher</string>
|
||||
<string name="app_launcher_name">Iniciador</string>
|
||||
<string name="double_tap_to_lock">Toque duas vezes para bloquear a tela</string>
|
||||
<string name="lock_device_admin_hint">Para habilitar o recurso de toque duplo para bloquear a tela, você precisa conceder permissão de administrador. Observe que o aplicativo não pode ser desinstalado até que essa permissão seja removida.</string>
|
||||
<string name="lock_device_admin_warning">Desativar a permissão de administrador desabilitará o recurso de toque duplo para bloquear a tela.</string>
|
||||
|
||||
8
fastlane/metadata/android/en-US/changelogs/6.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/6.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Addressed frequently occurring crashes
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
Le Lanceur Fossify est votre passerelle vers une expérience d'écran d'accueil rapide, personnalisée et respectueuse de la vie privée. Pas de publicités, pas de surabondance, juste un lanceur fluide et efficace conçu pour s'adapter à votre style et à vos préférences uniques.<br><br>
|
||||
Fossify Launcher est votre passerelle vers une expérience d'écran d'accueil rapide, personnalisée et respectueuse de la vie privée. Pas de publicités, pas de surabondance, juste un lanceur fluide et efficace conçu pour s'adapter à votre style et à vos préférences uniques.<br><br>
|
||||
<b>🚀 NAVIGATION ULTRA-RAPIDE :</b><br>
|
||||
Naviguez sur votre appareil avec rapidité et précision. Le Lanceur Fossify est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.<br><br>
|
||||
Naviguez sur votre appareil avec rapidité et précision. Fossify Launcher est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.<br><br>
|
||||
<b>🎨 PERSONNALISATION COMPLÈTE :</b><br>
|
||||
Personnalisez votre écran d'accueil avec des thèmes dynamiques, des couleurs personnalisées et des mises en page. Personnalisez votre lanceur en fonction de votre style avec des outils faciles à utiliser qui vous permettent de créer une configuration vraiment unique.<br><br>
|
||||
<b>🖼️ PRISE EN CHARGE COMPLÈTE DES WIDGETS :</b><br>
|
||||
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, le Lanceur Fossify veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
|
||||
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, Fossify Launcher veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
|
||||
<b>📱 PAS D'ENCOMBREMENT INDÉSIRABLE :</b><br>
|
||||
Gérez facilement vos applications en les masquant ou en les désinstallant en quelques clics, pour garder votre écran d'accueil organisé et sans encombrement.<br><br>
|
||||
<b>🔒 CONFIDENTIALITÉ ET SÉCURITÉ :</b><br>
|
||||
Votre vie privée est au cœur du Lanceur Fossify. Sans accès à Internet et sans autorisations intrusives, vos données restent avec vous. Pas de suivi, pas de publicités : juste un lanceur conçu pour respecter votre vie privée.<br><br>
|
||||
Votre vie privée est au cœur de Fossify Launcher. Sans accès à Internet et sans autorisations intrusives, vos données restent avec vous. Pas de suivi, pas de publicités : juste un lanceur conçu pour respecter votre vie privée.<br><br>
|
||||
<b>🌐 ASSURANCE OPEN SOURCE :</b><br>
|
||||
Le Lanceur Fossify est construit sur une base open source, vous permettant de consulter notre code sur GitHub, favorisant la confiance et une communauté engagée en faveur de la confidentialité.<br><br>
|
||||
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec le Lanceur Fossify.<br><br>
|
||||
Fossify Launcher est construit sur une base open source, qui vous permet de consulter notre code sur GitHub, favorisant la confiance et une communauté engagée en faveur de la confidentialité.<br><br>
|
||||
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec Fossify Launcher.<br><br>
|
||||
Découvrez d'autres applications Fossify : https://www.fossify.org<br>
|
||||
Code open source : https://www.github.com/FossifyOrg<br>
|
||||
Rejoignez la communauté sur Reddit : https://www.reddit.com/r/Fossify<br>
|
||||
|
||||
@@ -5,6 +5,6 @@ android.nonTransitiveRClass=true
|
||||
org.gradle.jvmargs=-Xmx4096M
|
||||
|
||||
# Versioning
|
||||
VERSION_NAME=1.1.2
|
||||
VERSION_CODE=5
|
||||
VERSION_NAME=1.1.3
|
||||
VERSION_CODE=6
|
||||
APP_ID=org.fossify.home
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#jetbrains
|
||||
kotlin = "2.1.21"
|
||||
#KSP
|
||||
ksp = "2.1.21-2.0.1"
|
||||
ksp = "2.1.21-2.0.2"
|
||||
#Detekt
|
||||
detekt = "1.23.8"
|
||||
#Room
|
||||
room = "2.7.1"
|
||||
#Fossify
|
||||
commons = "2.0.1"
|
||||
commons = "3.0.5"
|
||||
#Gradle
|
||||
gradlePlugins-agp = "8.10.1"
|
||||
#build
|
||||
|
||||
Reference in New Issue
Block a user