diff --git a/app/src/main/java/com/aurora/store/compose/ui/preferences/installation/InstallationPreferenceScreen.kt b/app/src/main/java/com/aurora/store/compose/ui/preferences/installation/InstallationPreferenceScreen.kt index 1023f45b17..e86ce5f01a 100644 --- a/app/src/main/java/com/aurora/store/compose/ui/preferences/installation/InstallationPreferenceScreen.kt +++ b/app/src/main/java/com/aurora/store/compose/ui/preferences/installation/InstallationPreferenceScreen.kt @@ -7,23 +7,31 @@ package com.aurora.store.compose.ui.preferences.installation import android.app.admin.DevicePolicyManager import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.selection.selectable import androidx.compose.material3.AlertDialog import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.ListItem +import androidx.compose.material3.RadioButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewWrapper @@ -32,8 +40,14 @@ import com.aurora.store.R import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.navigation.Destination import com.aurora.store.compose.preview.ThemePreviewProvider +import com.aurora.store.data.installer.AppInstaller +import com.aurora.store.data.model.Installer import com.aurora.store.util.Preferences +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_ALL +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_CURRENT +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_WORK import com.aurora.store.util.Preferences.PREFERENCE_AUTO_DELETE +import com.aurora.store.util.Preferences.PREFERENCE_INSTALLATION_PROFILE import com.aurora.store.util.save @Composable @@ -64,6 +78,65 @@ private fun ScreenContent( } var showClearOwnerDialog by remember { mutableStateOf(false) } + // Shizuku is the only installer with the privileges to target other user profiles. + val showInstallProfile = remember { + AppInstaller.getCurrentInstaller(context) == Installer.SHIZUKU + } + var installProfile by remember { + mutableIntStateOf( + Preferences.getInteger( + context, + PREFERENCE_INSTALLATION_PROFILE, + INSTALLATION_PROFILE_CURRENT + ) + ) + } + var showInstallProfileDialog by remember { mutableStateOf(false) } + + if (showInstallProfileDialog) { + AlertDialog( + onDismissRequest = { showInstallProfileDialog = false }, + title = { Text(stringResource(R.string.pref_install_profile_title)) }, + text = { + Column { + listOf( + INSTALLATION_PROFILE_CURRENT, + INSTALLATION_PROFILE_WORK, + INSTALLATION_PROFILE_ALL + ).forEach { mode -> + Row( + modifier = Modifier + .fillMaxWidth() + .selectable( + selected = installProfile == mode, + onClick = { + installProfile = mode + context.save(PREFERENCE_INSTALLATION_PROFILE, mode) + showInstallProfileDialog = false + } + ) + .padding(vertical = dimensionResource(R.dimen.spacing_small)), + verticalAlignment = Alignment.CenterVertically + ) { + RadioButton(selected = installProfile == mode, onClick = null) + Text( + modifier = Modifier.padding( + start = dimensionResource(R.dimen.spacing_small) + ), + text = stringResource(installProfileLabel(mode)) + ) + } + } + } + }, + confirmButton = { + TextButton(onClick = { showInstallProfileDialog = false }) { + Text(stringResource(android.R.string.cancel)) + } + } + ) + } + if (showClearOwnerDialog) { AlertDialog( onDismissRequest = { showClearOwnerDialog = false }, @@ -104,6 +177,19 @@ private fun ScreenContent( supportingContent = { Text(stringResource(R.string.pref_install_mode_summary)) } ) } + if (showInstallProfile) { + item { + ListItem( + modifier = Modifier.clickable { showInstallProfileDialog = true }, + headlineContent = { + Text(stringResource(R.string.pref_install_profile_title)) + }, + supportingContent = { + Text(stringResource(installProfileLabel(installProfile))) + } + ) + } + } item { HorizontalDivider() } item { ListItem( @@ -148,6 +234,12 @@ private fun ScreenContent( } } +private fun installProfileLabel(mode: Int): Int = when (mode) { + INSTALLATION_PROFILE_WORK -> R.string.pref_install_profile_work + INSTALLATION_PROFILE_ALL -> R.string.pref_install_profile_all + else -> R.string.pref_install_profile_current +} + @PreviewWrapper(ThemePreviewProvider::class) @Preview @Composable diff --git a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt index db090dc504..82046a120c 100644 --- a/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt +++ b/app/src/main/java/com/aurora/store/data/installer/ShizukuInstaller.kt @@ -29,9 +29,12 @@ import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller.SessionParams import android.content.pm.PackageInstallerHidden import android.content.pm.PackageManagerHidden +import android.content.pm.UserInfo import android.os.Build import android.os.IBinder import android.os.IInterface +import android.os.IUserManager +import android.os.Process import android.util.Log import androidx.annotation.RequiresApi import androidx.core.app.PendingIntentCompat @@ -49,6 +52,11 @@ import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.receiver.InstallerStatusReceiver import com.aurora.store.data.room.download.Download import com.aurora.store.util.PackageUtil.isSharedLibraryInstalled +import com.aurora.store.util.Preferences +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_ALL +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_CURRENT +import com.aurora.store.util.Preferences.INSTALLATION_PROFILE_WORK +import com.aurora.store.util.Preferences.PREFERENCE_INSTALLATION_PROFILE import dagger.hilt.android.qualifiers.ApplicationContext import dev.rikka.tools.refine.Refine import javax.inject.Inject @@ -90,17 +98,75 @@ class ShizukuInstaller @Inject constructor( IPackageInstaller.Stub.asInterface(iPackageManager.packageInstaller.asShizukuBinder()) } - private val packageInstaller: PackageInstaller? by lazy { - if (isSAndAbove) { - Refine.unsafeCast( - PackageInstallerHidden(iPackageInstaller, PLAY_PACKAGE_NAME, null, 0) - ) - } else if (isOAndAbove) { - Refine.unsafeCast( - PackageInstallerHidden(iPackageInstaller, PLAY_PACKAGE_NAME, 0) - ) - } else { - null + private val iUserManager: IUserManager by lazy { + IUserManager.Stub.asInterface(SystemServiceHelper.getSystemService("user").wrap()) + } + + /** + * Id of the user/profile Aurora Store itself runs in. Mirrors the calculation used by the + * root installer ([RootInstaller]); the multiplier is Android's per-user UID range. + */ + private val currentUserId: Int + get() = Process.myUid() / 100_000 + + /** + * Builds a [PackageInstaller] bound to [userId] so sessions are created for that profile. + * The hidden [PackageInstallerHidden] constructor takes the target user id as its last + * argument, which is how installing into a work profile is achieved with Shizuku privileges. + */ + private fun getPackageInstaller(userId: Int): PackageInstaller? = when { + isSAndAbove -> Refine.unsafeCast( + PackageInstallerHidden(iPackageInstaller, PLAY_PACKAGE_NAME, null, userId) + ) + + isOAndAbove -> Refine.unsafeCast( + PackageInstallerHidden(iPackageInstaller, PLAY_PACKAGE_NAME, userId) + ) + + else -> null + } + + /** + * Resolves the user/profile ids to install into based on the user's preference. + * Falls back to the current profile when the requested profile can't be resolved (e.g. the + * work profile preference is set but no managed profile exists). + */ + private fun getTargetUserIds(): List { + val mode = Preferences.getInteger( + context, + PREFERENCE_INSTALLATION_PROFILE, + INSTALLATION_PROFILE_CURRENT + ) + if (mode == INSTALLATION_PROFILE_CURRENT) return listOf(currentUserId) + + val users = runCatching { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + iUserManager.getUsers(true, true, true) + } else { + @Suppress("DEPRECATION") + iUserManager.getUsers(true) + } + }.getOrElse { ex -> + Log.e(TAG, "Failed to query users, using current profile", ex) + emptyList() + } + + return when (mode) { + INSTALLATION_PROFILE_WORK -> + users + .filter { (it.flags and UserInfo.FLAG_MANAGED_PROFILE) != 0 } + .map { it.id } + .ifEmpty { + Log.i(TAG, "No work profile found, falling back to current profile") + listOf(currentUserId) + } + + INSTALLATION_PROFILE_ALL -> + users + .map { it.id } + .ifEmpty { listOf(currentUserId) } + + else -> listOf(currentUserId) } } @@ -110,33 +176,39 @@ class ShizukuInstaller @Inject constructor( if (isAlreadyQueued(download.packageName)) { Log.i(TAG, "${download.packageName} already queued") } else { - download.sharedLibs.forEach { - // Shared library packages cannot be updated - if (!isSharedLibraryInstalled(context, it.packageName, it.versionCode)) { - install( - packageName = download.packageName, - versionCode = download.versionCode, - sharedLibPkgName = it.packageName - ) + getTargetUserIds().forEach { userId -> + download.sharedLibs.forEach { + // Shared library packages cannot be updated + if (!isSharedLibraryInstalled(context, it.packageName, it.versionCode)) { + install( + packageName = download.packageName, + versionCode = download.versionCode, + userId = userId, + sharedLibPkgName = it.packageName + ) + } } + install( + packageName = download.packageName, + versionCode = download.versionCode, + userId = userId, + displayName = download.displayName + ) } - install( - packageName = download.packageName, - versionCode = download.versionCode, - displayName = download.displayName - ) } } private fun install( packageName: String, versionCode: Long, + userId: Int, sharedLibPkgName: String = "", displayName: String = "" ) { Log.i( TAG, - "Received session install request for ${sharedLibPkgName.ifBlank { packageName }}" + "Received session install request for " + + "${sharedLibPkgName.ifBlank { packageName }} (user $userId)" ) val (sessionId, session) = kotlin.runCatching { @@ -149,7 +221,7 @@ class ShizukuInstaller @Inject constructor( Refine.unsafeCast(params).installFlags = flags - val sessionId = packageInstaller!!.createSession(params) + val sessionId = getPackageInstaller(userId)!!.createSession(params) val iSession = IPackageInstallerSession.Stub.asInterface( iPackageInstaller.openSession(sessionId).asShizukuBinder() ) diff --git a/app/src/main/java/com/aurora/store/util/Preferences.kt b/app/src/main/java/com/aurora/store/util/Preferences.kt index b3396683fa..ac7d6ba87b 100644 --- a/app/src/main/java/com/aurora/store/util/Preferences.kt +++ b/app/src/main/java/com/aurora/store/util/Preferences.kt @@ -56,6 +56,17 @@ object Preferences { const val PREFERENCE_INSTALLATION_DEVICE_OWNER = "PREFERENCE_INSTALLATION_DEVICE_OWNER" + /** + * Target profile for the Shizuku installer. Stores one of [INSTALLATION_PROFILE_CURRENT], + * [INSTALLATION_PROFILE_WORK] or [INSTALLATION_PROFILE_ALL]. Only Shizuku has the privileges + * to install across user profiles, so other installers ignore this value. + */ + const val PREFERENCE_INSTALLATION_PROFILE = "PREFERENCE_INSTALLATION_PROFILE" + + const val INSTALLATION_PROFILE_CURRENT = 0 + const val INSTALLATION_PROFILE_WORK = 1 + const val INSTALLATION_PROFILE_ALL = 2 + const val PREFERENCE_PROXY_URL = "PREFERENCE_PROXY_URL" const val PREFERENCE_PROXY_INFO = "PREFERENCE_PROXY_INFO" diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index e8439ada27..992682544e 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -635,4 +635,8 @@ تعذّر تحديث %1$d حسابًا تعذّر تحديث %1$d حساب + التثبيت في الملف الشخصي + الملف الشخصي الحالي + ملف العمل + جميع الملفات الشخصية diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml index 1ffa8d93bd..7f728aeff3 100644 --- a/app/src/main/res/values-ast/strings.xml +++ b/app/src/main/res/values-ast/strings.xml @@ -381,4 +381,8 @@ Requires Shizuku or Sui, needs to be setup and permission granted Códigu fonte Conoz más tocante a Aurora Store + Instalar nel perfil + Perfil actual + Perfil del trabayu + Tolos perfiles diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 1b8bef32c8..6e609a81d0 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -456,6 +456,10 @@ Ətraflı məlumat üçün tətbiq seç Reklam yoxdur play xidmətləri yoxdur + Profilə quraşdır + Cari profil + İş profili + Bütün profillər Varsayılan olaraq təyin edin standart çıxarın diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 8e9a5c2edf..d2f1eb4eeb 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -472,4 +472,8 @@ Старонка %1$d Прапусціць Перазапусціць, каб прымяніць змены? + Усталяваць у профіль + Бягучы профіль + Працоўны профіль + Усе профілі diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 8b7231af15..04d2fbc785 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -278,4 +278,8 @@ %1$d тракер(и) намерени в %2$s Най-нови Грешка при инсталирането на MicroG, най-вероятно поради грешка в конфигурацията. + Инсталиране в профил + Текущ профил + Служебен профил + Всички профили diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index bd24c69e6e..d8e3ced6b2 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -471,4 +471,8 @@ L\'última sessió s\'ha descartat Ometre Reiniciar per tal d\'aplicar els canvis? + Instal·la al perfil + Perfil actual + Perfil de treball + Tots els perfils diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index dc91e6f2ee..fc2c351a04 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -623,4 +623,8 @@ Nepodařilo se aktualizovat %1$d účtů Nepodařilo se aktualizovat %1$d účtů + Instalovat do profilu + Aktuální profil + Pracovní profil + Všechny profily diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 5a7fdbf030..cb695fdbc7 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -438,4 +438,8 @@ Udvikleren siger, at denne app ikke deler brugerdata med andre virksomheder eller organisationer. Denne version af appen kan stadig indeholde flere trackere, der endnu ikke findes i Exodus Privacys database. %1$d kendt(e) tracker(e) fundet i %2$s + Installér i profil + Nuværende profil + Arbejdsprofil + Alle profiler diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 0d86279a47..d6da4f04a7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -611,4 +611,8 @@ %1$d Konto konnte nicht aktualisiert werden %1$d Kontos konnten nicht aktualisiert werden + In Profil installieren + Aktuelles Profil + Arbeitsprofil + Alle Profile diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 930f3cd2bf..ddd56fe60b 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -475,4 +475,8 @@ microG δεν είναι πλέον εγκατεστημένο. Εκτελέστε ξανά τη ρύθμιση για να συνεχίσουν όλα να λειτουργούν ομαλά. Προετοιμασία για λήψη Επαλήθευση λήψεων + Εγκατάσταση σε προφίλ + Τρέχον προφίλ + Προφίλ εργασίας + Όλα τα προφίλ diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index ae364befed..24c4832a0d 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -363,4 +363,8 @@ Google Play, ankaŭ konata tiel Google Play Store kaj estinte Android market. Eksteran storon atingo Aurora Store ebligi serĉi kaj elŝuti apojn el la oficiala Google Play Store. Vi povas vidi apojn priskribojn, ekrankopiojn, ĝisdatigojn, komentojn kaj elŝuti la APKjn rekte el Google Play al via aparato. Por uzi Aurora Store, necesas, ke vi havas Google Play konton kaj ensalutas tiun konton kiam vi malfermi kaj agordi Aurora Store je la unua fojo. \n \nMalkiel tradiciaj apbutikoj, Aurora Store ne posedas, donas permesilon aŭ disdonas iun ajn apon. Ĉiuj apoj, appriskriboj, ekrankopiojn kaj aliaj enhavoj en Aurora Store estas rekte atingataj, elŝutataj aŭ montriĝataj el Google Play. Aurora Store funkcias ekzakte tiel pordo aŭ retumilo, ebligante vin saluti vian Google Play konton kaj trovi apojn el Google Play. \n \nBonvolu rimarki ke Aurora Store ne havas ajn aprobon, patronadon aŭ rajtigon el Google, Google Play, iu ajn apo elŝutita tra Aurora Store aŭ iu ajn approgramisto; nek havas Aurora Store iun ajn filion, kunlaboron aŭ interligecon kun ili. + Instali en profilon + Nuna profilo + Labora profilo + Ĉiuj profiloj diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e8d4516926..7873c264de 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -617,4 +617,8 @@ No se pudo actualizar %1$d cuentas No se pudo actualizar %1$d cuentas + Instalar en el perfil + Perfil actual + Perfil de trabajo + Todos los perfiles diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 8f23e751d6..3c7efcb5f4 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -583,6 +583,10 @@ %1$d lemmik %1$d lemmikut + Paigalda profiili + Praegune profiil + Tööprofiil + Kõik profiilid Määra vaikimisi väärtuseks Vaikimisi Eemalda diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 8ba2e1f75d..0148dfee60 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -558,4 +558,8 @@ Denak Eguneratua %1$s Egiaztatu + Instalatu profilean + Uneko profila + Laneko profila + Profil guztiak diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 4c622f07c9..6d0db85ed5 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -292,4 +292,8 @@ هیچ برنامه (اپلیکیشن) مورد نظر پیدا نشد بطور موفقانه حذف گردید همه اش را پاک کن + نصب در نمایه + نمایه فعلی + نمایه کاری + همه نمایه‌ها diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 329e3aedc5..db340c6928 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -476,4 +476,8 @@ Muut Valmistaudutaan lataamaan Latauksia varmistetaan + Asenna profiiliin + Nykyinen profiili + Työprofiili + Kaikki profiilit diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 1696dc716e..3b8318331e 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -617,4 +617,8 @@ Impossible d’actualiser %1$d de comptes Impossible d’actualiser %1$d de comptes + Installer dans le profil + Profil actuel + Profil professionnel + Tous les profils diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 4770649ce8..2f43774147 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -445,6 +445,10 @@ Intentar de novo Ver na Play Store Datos que a aplicación podería recopilar + Instalar no perfil + Perfil actual + Perfil de traballo + Todos os perfís Establecer como predeterminada Predeterminada Eliminar diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index f4da771865..d95969a8bd 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -458,4 +458,8 @@ अधिक जानकारी के लिए कोई ऐप चुनें कोई विज्ञापन नहीं बिना Play Services के + प्रोफ़ाइल में इंस्टॉल करें + वर्तमान प्रोफ़ाइल + कार्य प्रोफ़ाइल + सभी प्रोफ़ाइल diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index c0a18c6490..63be188934 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -463,4 +463,8 @@ Potrebne dozvole Potrebnih dozvola + Instaliraj u profil + Trenutni profil + Poslovni profil + Svi profili diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 09ab4507f0..1619f261a9 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -611,4 +611,8 @@ %1$d fiók frissítése sikertelen %1$d fiók frissítése sikertelen + Telepítés profilba + Jelenlegi profil + Munkahelyi profil + Összes profil diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 957c63e827..dd7e6ef8cf 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -605,4 +605,8 @@ Tidak dapat menyegarkan %1$d akun + Pasang ke profil + Profil saat ini + Profil kerja + Semua profil diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7338328499..030efb9d93 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -471,6 +471,10 @@ Senza Play Services Caricamento in corso Pagina %1$d + Installa nel profilo + Profilo attuale + Profilo di lavoro + Tutti i profili Imposta come predefinito Predefinito Rimuovi diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index e31dac2e10..124eb8d35d 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -481,6 +481,10 @@ כל 3 ימים כל 7 ימים כל 15 ימים + התקנה בפרופיל + הפרופיל הנוכחי + פרופיל עבודה + כל הפרופילים הגדר כברירת מחדל ברירת מחדל הסר diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 09bfd0cdb3..9b214b7a28 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -469,6 +469,10 @@ Google Play 開発者サービスなし %1$d ページ microGは、Androidデバイス向けにGoogle Play Servicesに依存するアプリを再実装によって動作させる、同様の機能を提供する無料のオープンソース実装です。\n\nmicroGはアプリがこれらのGoogle APIにアクセスすることを可能にし、ユーザーの互換性を高めつつプライバシー上の利点を提供します。\n\nGoogle Mobile Servicesに依存するアプリケーションを開くと、microGはバックグラウンドで自動的に動作します。 + プロファイルにインストール + 現在のプロファイル + 仕事用プロファイル + すべてのプロファイル デフォルト 削除 アカウントを削除しますか? diff --git a/app/src/main/res/values-kab/strings.xml b/app/src/main/res/values-kab/strings.xml index d32a3f5ef4..9a6edbf32e 100644 --- a/app/src/main/res/values-kab/strings.xml +++ b/app/src/main/res/values-kab/strings.xml @@ -119,4 +119,8 @@ Astebter %1$d Isnasen-iw d wuraren-iw %1$s akked %2$s + Sebded deg amaɣnu + Amaɣnu amiran + Amaɣnu n umahil + Imuɣna meṛṛa diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0a4a680a65..343bda7d5b 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -469,6 +469,10 @@ microG는 Google Play Services에 의존하는 앱을 안드로이드 기기에서 실행할 수 있도록 재구현 방식으로 제공되는 무료 오픈소스 구현체입니다.\n\nmicroG는 앱이 Google API에 접근할 수 있도록 하여 사용자 호환성을 높이고 개인정보 보호 측면에서도 이점을 제공합니다.\n\nGoogle Mobile Services에 의존하는 앱을 실행하면 microG는 백그라운드에서 자동으로 동작합니다. microG 개인정보보호 정책 읽기 microG 라이선스 및 계약 읽기 + 프로필에 설치 + 현재 프로필 + 직장 프로필 + 모든 프로필 기본값으로 설정 기본값 제거 diff --git a/app/src/main/res/values-kw/strings.xml b/app/src/main/res/values-kw/strings.xml index b945eb151f..6a4049d715 100644 --- a/app/src/main/res/values-kw/strings.xml +++ b/app/src/main/res/values-kw/strings.xml @@ -151,4 +151,8 @@ Gonisyow Aurora yw kavadow ha kysi rag leyans. Lea Gonisyow Aurora 1.0.9 po moy, po chanjya an leyer. Selya Gonisyow Aurora ha grontya oll grontys kynsa. + Ostalya y\'n profil + Profil a-lemmyn + Profil ober + Oll an profilyow diff --git a/app/src/main/res/values-lo/strings.xml b/app/src/main/res/values-lo/strings.xml index d8b84803ff..975e6285b1 100644 --- a/app/src/main/res/values-lo/strings.xml +++ b/app/src/main/res/values-lo/strings.xml @@ -469,4 +469,8 @@ ບໍ່ໃຊ້ Play Services ກຳລັງໂຫລດ... ໜ້າ %1$d + ຕິດຕັ້ງໃສ່ໂປຣໄຟລ໌ + ໂປຣໄຟລ໌ປັດຈຸບັນ + ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ + ໂປຣໄຟລ໌ທັງໝົດ diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 59fbff3a0e..973fb80af5 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -325,4 +325,8 @@ Plėtotojas teigia, jog ši programėlė nebendrina naudotojo duomenų su kitomis kompanijomis ar organizacijomis. Shizuku diegimo programa Sava diegimo programa (pasenusi) + Įdiegti į profilį + Dabartinis profilis + Darbo profilis + Visi profiliai diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 793acf3997..b760014e7d 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -504,6 +504,10 @@ Brīdinājumi Pašatjaunināšana Piedāvāt jaunus Aurora Store būvējumus atjauninājumu cilnē. + Instalēt profilā + Pašreizējais profils + Darba profils + Visi profili Iestatīt kā noklusējuma Noklusējuma Noņemt diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index cb93ea0562..e01ff597ad 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -579,6 +579,10 @@ %1$d kegemaran + Pasang ke profil + Profil semasa + Profil kerja + Semua profil Tetapkan sebagai lalai Lalai Alih keluar diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 6a65eeafe0..3cb8feaf0b 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -601,4 +601,8 @@ %1$d account kon niet worden bijgewerkt %1$d accounts konden niet worden bijgewerkt + In profiel installeren + Huidig profiel + Werkprofiel + Alle profielen diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 60b78b5b6c..24c343c834 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -374,4 +374,8 @@ ਵਿਕਲਪਿਕ ਲੋੜੀਂਦੀ ਅੱਪਡੇਟ ਲਈ ਚੈੱਕ ਕਰੋ + ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਇੰਸਟਾਲ ਕਰੋ + ਮੌਜੂਦਾ ਪ੍ਰੋਫਾਈਲ + ਕੰਮ ਪ੍ਰੋਫਾਈਲ + ਸਾਰੇ ਪ੍ਰੋਫਾਈਲ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 4684af6890..1ecb75ff9d 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -623,4 +623,8 @@ Nie udało się odświeżyć %1$d kont Nie udało się odświeżyć %1$d kont + Zainstaluj w profilu + Bieżący profil + Profil służbowy + Wszystkie profile diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 9f866705f9..312205bd44 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -587,6 +587,10 @@ %1$d de favoritos %1$d favoritos + Instalar no perfil + Perfil atual + Perfil de trabalho + Todos os perfis Configurar como padrão Padrão Remover diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 19f1dbc920..a6c93030c7 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -525,6 +525,10 @@ Tudo Atualizado em %1$s Conferir + Instalar no perfil + Perfil atual + Perfil de trabalho + Todos os perfis Configurar como predefinição Predefinição Remover diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index e0fdc8b997..25718c8017 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -617,4 +617,8 @@ Nu s-au putut reîmprospăta %1$d conturi Nu s-au putut reîmprospăta %1$d de conturi + Instalează în profil + Profilul curent + Profil de serviciu + Toate profilurile diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8acadea759..fa3f7fa75f 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -591,6 +591,10 @@ %1$d избранных %1$d избранных + Установка в профиль + Текущий профиль + Рабочий профиль + Все профили Установить по умолчанию По умолчанию Удалить diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index 2149aae4a3..e1f80792e4 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -320,4 +320,8 @@ යළි අරඹන්න ඔබට නික්මීමට වුවමනාද? නික්මෙනවාද? + පැතිකඩට ස්ථාපනය කරන්න + වත්මන් පැතිකඩ + කාර්යාල පැතිකඩ + සියලු පැතිකඩ diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 3eefac39fc..868bd40d8f 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -623,4 +623,8 @@ Nepodarilo sa aktualizovať %1$d účtov Nepodarilo sa aktualizovať %1$d účtov + Inštalovať do profilu + Aktuálny profil + Pracovný profil + Všetky profily diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 56f3a02eb1..45a7b15710 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -425,4 +425,8 @@ Samo na nemerjenih omrežjih Ko je naprava v pripravljenosti Ko napolnjenost baterije ni nizka + Namesti v profil + Trenutni profil + Delovni profil + Vsi profili diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index d9b384a008..df65473771 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -607,6 +607,10 @@ S’u rifreskua dot %1$d llogari S’u rifreskuan dot %1$d llogari + Instalo në profil + Profili aktual + Profili i punës + Të gjitha profilet Titull shqyrtimi I instaluar diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 2deb6972ff..53c68de9b5 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -489,4 +489,8 @@ Поновно покренути ради примењивања нових подешавања? Припрема се за инсталацију Учитавање у току + Инсталирај у профил + Тренутни профил + Пословни профил + Сви профили diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 4087dd34a8..88d64b8367 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -477,4 +477,8 @@ microG är inte längre installerat. Kör installationsprogrammet igen för att hålla allt igång smidigt. Svartlistad Andra + Installera i profil + Nuvarande profil + Arbetsprofil + Alla profiler diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 2abf1226a2..3885e99c4b 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -426,6 +426,10 @@ தானியங்கு புதுப்பிப்புகளுக்கான சாதனக் கட்டுப்பாடுகளை உள்ளமைக்கவும் சாதனம் சும்மா இருக்கும்போது பேட்டரி குறைவாக இல்லாதபோது + சுயவிவரத்தில் நிறுவு + தற்போதைய சுயவிவரம் + பணி சுயவிவரம் + அனைத்து சுயவிவரங்கள் இயல்புநிலையாக அமைக்கவும் இயல்புநிலை அகற்று diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c2f0991c1e..1f27686815 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -611,4 +611,8 @@ %1$d hesap yenilenemedi %1$d hesap yenilenemedi + Profile yükle + Geçerli profil + İş profili + Tüm profiller diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 44b7a9fda3..0ddd0ad531 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -623,4 +623,8 @@ Не вдалося оновити %1$d облікових записів Не вдалося оновити %1$d облікових записів + Встановлення у профіль + Поточний профіль + Робочий профіль + Усі профілі diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index 2f1a054061..92e9b49361 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -426,4 +426,8 @@ جب بیٹری کم نہیں ہے ڈاؤن لوڈ فائلوں کی تصدیق کرنے میں ناکام ارورہ اسٹور آپ کو گوگل کے سرکاری پلے اسٹور سے ایپس کو تلاش کرنے اور ڈاؤن لوڈ کرنے کے قابل بناتا ہے۔ آپ ایپ کی تفصیل ، اسکرین شاٹس ، اپ ڈیٹ ، دوسرے صارفین کے تبصرے چیک کرسکتے ہیں ، اور APK کو گوگل پلے سے براہ راست اپنے آلے پر ڈاؤن لوڈ کرسکتے ہیں۔ ارورہ اسٹور کو استعمال کرنے کے ل you ، آپ کو گوگل پلے اکاؤنٹ رکھنے کی ضرورت ہے ، اور جب آپ پہلی بار ارورہ اسٹور کو کھولتے اور تشکیل دیتے ہیں تو اپنے گوگل پلے اکاؤنٹ میں لاگ ان ہوجاتے ہیں۔ \n \n روایتی ایپ اسٹور کے برعکس ، ارورہ اسٹور کسی بھی ایپس کا مالک ، لائسنس یا تقسیم نہیں کرتا ہے۔ ارورہ اسٹور میں تمام ایپس ، ایپ کی تفصیل ، اسکرین شاٹس اور دیگر مواد کو براہ راست رسائی ، ڈاؤن لوڈ اور/یا گوگل پلے سے ظاہر کیا جاتا ہے۔ ارورہ اسٹور بالکل دروازے یا براؤزر کی طرح کام کرتا ہے ، جس سے آپ اپنے گوگل پلے اکاؤنٹ میں لاگ ان ہوسکتے ہیں اور گوگل پلے سے ایپس تلاش کرسکتے ہیں۔ \n \n براہ کرم نوٹ کریں کہ ارورہ اسٹور کے پاس گوگل، گوگل پلے ، کسی بھی ایپس کو اورورا اسٹور یا کسی بھی ایپ ڈویلپرز کے ذریعہ ڈاؤن لوڈ کردہ کوئی بھی ایپس کی منظوری ، کفالت یا اجازت نہیں ہے۔ نہ ہی ارورہ اسٹور میں ان کے ساتھ کوئی وابستگی ، تعاون یا رابطہ ہے۔ + پروفائل میں انسٹال کریں + موجودہ پروفائل + کام کا پروفائل + تمام پروفائلز diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index cab358dfad..41b71b3c07 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -424,4 +424,8 @@ Cần có sự cho phép + Cài đặt vào hồ sơ + Hồ sơ hiện tại + Hồ sơ công việc + Tất cả hồ sơ diff --git a/app/src/main/res/values-yue/strings.xml b/app/src/main/res/values-yue/strings.xml index b32133ea9b..033a6a0308 100644 --- a/app/src/main/res/values-yue/strings.xml +++ b/app/src/main/res/values-yue/strings.xml @@ -220,4 +220,8 @@ 請求重新分析 喺主畫面加個公仔 抹走搞掂嗰啲 + 安裝到設定檔 + 目前設定檔 + 工作設定檔 + 所有設定檔 diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 5464a00da0..50bb8e146c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -605,4 +605,8 @@ 无法刷新 %1$d 个账户 + 安装到资料 + 当前资料 + 工作资料 + 所有资料 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d8778b513d..ee1bf3f8f6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -476,6 +476,10 @@ 其他 正在準備下載 正在驗證下載 + 安裝到設定檔 + 目前設定檔 + 工作設定檔 + 所有設定檔 設爲預設 預設 刪除 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 07af8fe81c..06343e8f99 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -264,6 +264,10 @@ "MicroG installer" "Select mode of APK installation" "Installation method" + Install into profile + Current profile + Work profile + All profiles Google Play version Default (from device config) "Networking"