diff --git a/.gitmodules b/.gitmodules index 8bf645a..8fe9f0c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "libs/SetupWizardLibrary"] path = libs/SetupWizardLibrary url = https://gitea.angry.im/PeterCxy/SetupWizardLibrary.git - branch = android11-dev + branch = main diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..b589d56 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index ea3a166..6925d8a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - - + diff --git a/CHANGELOG.md b/CHANGELOG.md index eb1a085..4debf13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +1.9.1 (445) +=== + +- Hotfix crashes below Android 11. + +1.9 +=== + +- Updated targetSDK to 34 (Android 14) with compatibility fixes. +- More reliable delayed freezing using AlarmManager (thanks parmaster84). +- Support for cross-profile interactions allowlisting (e.g. for Gboard). +- Removed "Fake Camera" feature as it has not been supported since R. +- Version displayed within the app has now been changed to also reflect the exact Git commit when the app is built. +- File Shuttle no longer appends ".null" or ".bin" suffixes unnecessarily. This should make it work much better with file managers such as Material Files. +- File Shuttle now triggers media scanning much more robustly. Media files (pictures, videos, etc.) copied into the work profile should now show up much quicker in gallery apps. +- Added a fake NFC payment service to workaround a bug in Android that prevents payment apps inside the work profile from being used if none is present in the main profile. +- Fixed unintuitive colors of navigation icons under dark mode. + 1.8 === diff --git a/README.md b/README.md index 5a9d26b..8015eff 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,14 @@ Shelter is a Free and Open-Source (FOSS) app that leverages the "Work Profile" f Downloads === -- [Google Play](https://play.google.com/store/apps/details?id=net.typeblog.shelter) (Signed by PeterCxy) - [F-Droid](https://f-droid.org/app/net.typeblog.shelter) (Signed by F-Droid) -- [Custom F-Droid Repository](https://fdroid.typeblog.net) (Signed by PeterCxy, contains latest development versions) +- Custom F-Droid Repository (Signed by PeterCxy, contains latest development versions): + - [Click here](fdroidrepos://fdroid.typeblog.net?fingerprint=1A7E446C491C80BC2F83844A26387887990F97F2F379AE7B109679FEAE3DBC8C) to add from your phone + - Or scan the following QR-code: + ![](fdroid_custom_repo.png) + - Or setup manually: + - Url: https://fdroid.typeblog.net + - Fingerprint: `1A 7E 44 6C 49 1C 80 BC 2F 83 84 4A 26 38 78 87 99 0F 97 F2 F3 79 AE 7B 10 96 79 FE AE 3D BC 8C` You cannot switch between versions listed above that have different signature without uninstalling Shelter first. @@ -33,6 +38,13 @@ Caveats & Known Issues - Some caveats and known issues are discussed during the setup process of Shelter. __Please read through text in the setup wizard carefully__. - Shelter is only as safe as the Work Profile implementation of the Android OS you are using. For details, see +State of the Project, Feature Requests, etc. +=== + +Since Shelter simply makes use of the Work Profile APIs exposed by Android, there is a limited set of features that are possible to implement via the app. As we do not intend on leveraging (or "abusing") adb privileges, the features of Shelter can only be a strict subset of the exposed, unprivileged APIs. + +As a result, we do not intend on adding a lot of new features to Shelter going forward, unless there is to be big changes in the capabilities of work profile APIs. Shelter is currently in an effective **maintenance mode**. Nevertheless, the author is still committed to regularly **adapting Shelter to all new Android versions as soon as possible after they are released** -- this includes upgrading the target SDK level, adapting to any new features or restrictions introduced by the new Android version, updating all dependencies, and so on. The author still relies on Shelter for his daily life, so Shelter will **not** become abandonware in the forseeable future. + Contributing === diff --git a/app/build.gradle b/app/build.gradle index 16ddf91..f7ae368 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,15 +9,43 @@ repositories { } } +def getVersionCode = { -> + try { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'rev-list', '--first-parent', '--count', 'master' + standardOutput = stdout + } + return Integer.parseInt(stdout.toString().trim()) + } + catch (ignored) { + return -1; + } +} + +def getVersionName = { -> + try { + def stdout = new ByteArrayOutputStream() + exec { + commandLine 'git', 'describe', '--tags', '--dirty' + standardOutput = stdout + } + return stdout.toString().trim() + } + catch (ignored) { + return null; + } +} + android { - compileSdkVersion 33 - buildToolsVersion '33.0.0' + compileSdk 35 + buildToolsVersion = '35.0.0' defaultConfig { applicationId "net.typeblog.shelter" minSdkVersion 24 - targetSdkVersion 33 - versionCode 23 - versionName "1.8" + targetSdkVersion 35 + versionCode getVersionCode() + versionName getVersionName() testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -27,6 +55,11 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + applicationVariants.all { variant -> + if (variant.name == "debug") { + variant.outputs.each { o -> o.versionCodeOverride = System.currentTimeSeconds() } + } + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 @@ -34,21 +67,24 @@ android { lint { disable 'MissingTranslation', 'ExtraTranslation', 'GoogleAppIndexingWarning', 'InvalidFragmentVersionForActivityResult' } + buildFeatures { + aidl true + } + namespace 'net.typeblog.shelter' } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.legacy:legacy-support-core-ui:1.0.0' - implementation 'androidx.fragment:fragment:1.5.2' - implementation 'androidx.appcompat:appcompat:1.6.0-beta01' - implementation 'androidx.preference:preference:1.2.0' + implementation 'androidx.fragment:fragment:1.8.4' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'androidx.preference:preference:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'com.google.android.material:material:1.6.1' + implementation 'com.google.android.material:material:1.12.0' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' - implementation 'mobi.upod:time-duration-picker:1.1.3' debugImplementation project(path: ':setup-wizard-lib', configuration: 'gingerbreadCompatDebugRuntimeElements') releaseImplementation project(path: ':setup-wizard-lib', configuration: 'gingerbreadCompatReleaseRuntimeElements') testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test:runner:1.4.1-alpha03' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0-alpha03' + androidTestImplementation 'androidx.test:runner:1.6.0-alpha04' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.0-alpha01' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index df41671..23f5253 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ @@ -10,6 +9,7 @@ + + @@ -98,18 +99,6 @@ - - - - - - - - @@ -165,7 +155,21 @@ - + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/aidl/net/typeblog/shelter/services/IShelterService.aidl b/app/src/main/aidl/net/typeblog/shelter/services/IShelterService.aidl index 7f3bc01..dd71266 100644 --- a/app/src/main/aidl/net/typeblog/shelter/services/IShelterService.aidl +++ b/app/src/main/aidl/net/typeblog/shelter/services/IShelterService.aidl @@ -26,4 +26,6 @@ interface IShelterService { List getCrossProfileWidgetProviders(); boolean setCrossProfileWidgetProviderEnabled(String pkgName, boolean enabled); void setStartActivityProxy(in IStartActivityProxy proxy); + List getCrossProfilePackages(); + void setCrossProfilePackages(in List packages); } diff --git a/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java b/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java index 5350e7a..ff6355c 100644 --- a/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java +++ b/app/src/main/java/net/typeblog/shelter/services/FileShuttleService.java @@ -1,6 +1,7 @@ package net.typeblog.shelter.services; import android.app.Service; +import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; @@ -18,6 +19,7 @@ import android.webkit.MimeTypeMap; import androidx.annotation.Nullable; +import net.typeblog.shelter.R; import net.typeblog.shelter.ShelterApplication; import net.typeblog.shelter.util.CrossProfileDocumentsProvider; import net.typeblog.shelter.util.Utility; @@ -65,7 +67,12 @@ public class FileShuttleService extends Service { File f = new File(resolvePath(path)); HashMap map = new HashMap<>(); map.put(DocumentsContract.Document.COLUMN_DOCUMENT_ID, f.getAbsolutePath()); - map.put(DocumentsContract.Document.COLUMN_DISPLAY_NAME, f.getName()); + if (f.equals(Environment.getExternalStorageDirectory())) { + // Show "Shelter" as the name of the root directory + map.put(DocumentsContract.Document.COLUMN_DISPLAY_NAME, getString(R.string.app_name)); + } else { + map.put(DocumentsContract.Document.COLUMN_DISPLAY_NAME, f.getName()); + } map.put(DocumentsContract.Document.COLUMN_SIZE, f.length()); map.put(DocumentsContract.Document.COLUMN_LAST_MODIFIED, f.lastModified()); @@ -94,10 +101,24 @@ public class FileShuttleService extends Service { public ParcelFileDescriptor openFile(String path, String mode) { resetSuicideTask(); File f = new File(resolvePath(path)); + int numericMode = ParcelFileDescriptor.parseMode(mode); try { - return ParcelFileDescriptor.open(f, ParcelFileDescriptor.parseMode(mode)); - } catch (FileNotFoundException e) { + if ((numericMode & ParcelFileDescriptor.MODE_WRITE_ONLY) != 0) { + // When the file is opened in writable mode, and the file is of a media + // type, we need to notify the media scanner of the update. + // Even though this is done as part of file creation as well, that scan + // might have failed because it happened before the writer was able to + // finish writing. + return ParcelFileDescriptor.open(f, numericMode, mHandler, (e) -> { + String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension( + Utility.getFileExtension(f.getAbsolutePath())); + notifyMediaScannerIfNecessary(f, mime); + }); + } else { + return ParcelFileDescriptor.open(f, numericMode); + } + } catch (IOException e) { return null; } } @@ -126,36 +147,32 @@ public class FileShuttleService extends Service { public String createFile(String path, String mimeType, String displayName) { resetSuicideTask(); File f; - if (!DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType)) { - String fullPath = path + "/" + displayName; + String fullPath = path + "/" + displayName; + boolean isDirectory = + DocumentsContract.Document.MIME_TYPE_DIR.equals(mimeType); + boolean shouldAppendExtension = + mimeType != null && !isDirectory && !mimeType.equals("application/octet-stream"); + + // Append extension for files if a MIME type is specified + if (shouldAppendExtension) { String extensionPart = "." + MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); if (!fullPath.endsWith(extensionPart)) { fullPath += extensionPart; } - f = new File(resolvePath(fullPath)); - - if (mimeType.startsWith("image/") || mimeType.startsWith("video/")) { - // Notify the media scanner to scan the file - Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); - intent.setData(Uri.fromFile(f)); - sendBroadcast(intent); - } - - try { - if (!f.createNewFile()) { - return null; - } - } catch (IOException e) { - return null; - } - - } else { - String fullPath = path + "/" + displayName; - f = new File(resolvePath(fullPath)); - if (!f.mkdir()) { - return null; - } } + + // Now we can create the file / directory + f = new File(resolvePath(fullPath)); + try { + if ((isDirectory && !f.mkdir()) || (!isDirectory && !f.createNewFile())) { + return null; + } + } catch (IOException e) { + return null; + } + + notifyMediaScannerIfNecessary(f, mimeType); + return f.getAbsolutePath(); } @@ -273,14 +290,13 @@ public class FileShuttleService extends Service { return null; } - FileOutputStream os = new FileOutputStream(pair[1].getFileDescriptor()); + // Send the bitmap into the pipe in another thread, so that we can return the // reading fd to the Documents UI before we finish sending the Bitmap. new Thread(() -> { - bmp.compress(Bitmap.CompressFormat.PNG, 100, os); - try { + try (FileOutputStream os = new FileOutputStream(pair[1].getFileDescriptor())) { + bmp.compress(Bitmap.CompressFormat.PNG, 100, os); os.flush(); - os.close(); } catch (IOException e) { // ... } @@ -289,4 +305,14 @@ public class FileShuttleService extends Service { return pair[0]; } + + private void notifyMediaScannerIfNecessary(File f, String mimeType) { + // Notify the media scanner to scan the file as needed + // This has to be done AFTER file creation + if (mimeType != null && (mimeType.startsWith("image/") || mimeType.startsWith("video/"))) { + Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + intent.setData(Uri.fromFile(f)); + sendBroadcast(intent); + } + } } diff --git a/app/src/main/java/net/typeblog/shelter/services/FreezeService.java b/app/src/main/java/net/typeblog/shelter/services/FreezeService.java index daf90fa..77f4617 100644 --- a/app/src/main/java/net/typeblog/shelter/services/FreezeService.java +++ b/app/src/main/java/net/typeblog/shelter/services/FreezeService.java @@ -1,5 +1,6 @@ package net.typeblog.shelter.services; +import android.app.AlarmManager; import android.app.Notification; import android.app.PendingIntent; import android.app.Service; @@ -11,9 +12,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.os.Handler; import android.os.IBinder; -import android.os.Looper; import androidx.annotation.Nullable; @@ -72,8 +71,9 @@ public class FreezeService extends Service { // Delay the work so that it can be canceled if the screen // gets unlocked before the delay passes - mHandler.postDelayed(mFreezeWork, - ((long) SettingsManager.getInstance().getAutoFreezeDelay()) * 1000); + mAlarmManager.set(AlarmManager.RTC_WAKEUP, + System.currentTimeMillis() + ((long) SettingsManager.getInstance().getAutoFreezeDelay()) * 1000, + null, mFreezeWork, null); registerReceiver(mUnlockReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON)); } }; @@ -83,7 +83,7 @@ public class FreezeService extends Service { private BroadcastReceiver mUnlockReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - mHandler.removeCallbacks(mFreezeWork); + mAlarmManager.cancel(mFreezeWork); } }; @@ -96,9 +96,10 @@ public class FreezeService extends Service { private Map mUsageStats = new HashMap<>(); private long mScreenLockTime = -1; - // The handler and the delayed work to handle - private Handler mHandler = new Handler(Looper.getMainLooper()); - private Runnable mFreezeWork = () -> { + // Delayed work + private AlarmManager mAlarmManager; + + private AlarmManager.OnAlarmListener mFreezeWork = () -> { synchronized (FreezeService.class) { // Cancel the unlock receiver first - the delay has passed if this work is executed unregisterReceiver(mUnlockReceiver); @@ -128,6 +129,7 @@ public class FreezeService extends Service { @Override public void onCreate() { super.onCreate(); + mAlarmManager = getSystemService(AlarmManager.class); // This is the only thing that we do registerReceiver(mLockReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF)); // Use foreground notification to keep this service alive until screen is locked diff --git a/app/src/main/java/net/typeblog/shelter/services/PaymentStubService.java b/app/src/main/java/net/typeblog/shelter/services/PaymentStubService.java new file mode 100644 index 0000000..8b9c713 --- /dev/null +++ b/app/src/main/java/net/typeblog/shelter/services/PaymentStubService.java @@ -0,0 +1,18 @@ +package net.typeblog.shelter.services; + +import android.nfc.cardemulation.HostApduService; +import android.os.Bundle; + +public class PaymentStubService extends HostApduService { + @Override + public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) { + // We do not handle anything + notifyUnhandled(); + return null; + } + + @Override + public void onDeactivated(int reason) { + + } +} diff --git a/app/src/main/java/net/typeblog/shelter/services/ShelterService.java b/app/src/main/java/net/typeblog/shelter/services/ShelterService.java index d9fa83b..c1fe470 100644 --- a/app/src/main/java/net/typeblog/shelter/services/ShelterService.java +++ b/app/src/main/java/net/typeblog/shelter/services/ShelterService.java @@ -25,6 +25,8 @@ import net.typeblog.shelter.util.FileProviderProxy; import net.typeblog.shelter.util.UriForwardProxy; import net.typeblog.shelter.util.Utility; +import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; @@ -272,6 +274,24 @@ public class ShelterService extends Service { public void setStartActivityProxy(IStartActivityProxy proxy) { mStartActivityProxy = proxy; } + + @Override + public List getCrossProfilePackages() throws RemoteException { + if (!mIsProfileOwner) + throw new IllegalStateException("Cannot access cross-profile packages without being profile owner"); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) + throw new IllegalStateException("Cross-profile packages support is only available on Android 11 and later"); + return new ArrayList<>(mPolicyManager.getCrossProfilePackages(mAdminComponent)); + } + + @Override + public void setCrossProfilePackages(List packages) throws RemoteException { + if (!mIsProfileOwner) + throw new IllegalStateException("Cannot access cross-profile packages without being profile owner"); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) + throw new IllegalStateException("Cross-profile packages support is only available on Android 11 and later"); + mPolicyManager.setCrossProfilePackages(mAdminComponent, new HashSet<>(packages)); + } }; @Override diff --git a/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java b/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java index 84d4155..faa078e 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java +++ b/app/src/main/java/net/typeblog/shelter/ui/AppListFragment.java @@ -9,6 +9,7 @@ import android.content.IntentFilter; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.RemoteException; @@ -40,6 +41,7 @@ import net.typeblog.shelter.util.ApplicationInfoWrapper; import net.typeblog.shelter.util.LocalStorageManager; import net.typeblog.shelter.util.Utility; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -57,6 +59,7 @@ public class AppListFragment extends BaseFragment { private static final int MENU_ITEM_CREATE_UNFREEZE_SHORTCUT = 10006; private static final int MENU_ITEM_AUTO_FREEZE = 10007; private static final int MENU_ITEM_ALLOW_CROSS_PROFILE_WIDGET = 10008; + private static final int MENU_ITEM_ALLOW_CROSS_PROFILE_INTERACTION = 10009; private IShelterService mService = null; private boolean mIsRemote = false; @@ -68,6 +71,9 @@ public class AppListFragment extends BaseFragment { // Only useful if this fragment manages the work profile private Set mCrossProfileWidgetProviders = new HashSet<>(); + // Packages allowed to interact across profiles + private Set mCrossProfilePackages = new HashSet<>(); + // Views private RecyclerView mList = null; private AppListAdapter mAdapter = null; @@ -200,11 +206,15 @@ public class AppListFragment extends BaseFragment { public void callback(List apps) { if (mIsRemote) { mCrossProfileWidgetProviders.clear(); + mCrossProfilePackages.clear(); - // Update the cross-profile widget provider list + // Update the cross-profile packages / widget providers list try { mCrossProfileWidgetProviders.addAll(mService.getCrossProfileWidgetProviders()); - } catch (RemoteException e) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) + mCrossProfilePackages.addAll(mService.getCrossProfilePackages()); + } catch (RemoteException ignored) { } } @@ -288,7 +298,7 @@ public class AppListFragment extends BaseFragment { menu.add(Menu.NONE, MENU_ITEM_FREEZE, Menu.NONE, R.string.freeze_app); menu.add(Menu.NONE, MENU_ITEM_LAUNCH, Menu.NONE, R.string.launch); } - // Cross-profile widget settings is also limited to work profile + // Cross-profile widget / packages settings is also limited to work profile MenuItem crossProfileWdiegt = menu.add(Menu.NONE, MENU_ITEM_ALLOW_CROSS_PROFILE_WIDGET, Menu.NONE, R.string.allow_cross_profile_widgets); @@ -296,6 +306,15 @@ public class AppListFragment extends BaseFragment { crossProfileWdiegt.setChecked( mCrossProfileWidgetProviders.contains(mSelectedApp.getPackageName())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + MenuItem crossProfileInteraction = + menu.add(Menu.NONE, MENU_ITEM_ALLOW_CROSS_PROFILE_INTERACTION, Menu.NONE, + R.string.allow_cross_profile_interaction); + crossProfileInteraction.setCheckable(true); + crossProfileInteraction.setChecked( + mCrossProfilePackages.contains(mSelectedApp.getPackageName())); + } + // TODO: If we implement God Mode (i.e. Shelter as device owner), we should // TODO: use two different lists to store auto freeze apps because we'll be // TODO: able to freeze apps in main profile. @@ -393,7 +412,7 @@ public class AppListFragment extends BaseFragment { LocalStorageManager.PREF_AUTO_FREEZE_LIST_WORK_PROFILE, mSelectedApp.getPackageName()); } return true; - case MENU_ITEM_ALLOW_CROSS_PROFILE_WIDGET: + case MENU_ITEM_ALLOW_CROSS_PROFILE_WIDGET: { boolean newState = !item.isChecked(); try { if (mService.setCrossProfileWidgetProviderEnabled(mSelectedApp.getPackageName(), newState)) { @@ -410,6 +429,22 @@ public class AppListFragment extends BaseFragment { } return true; + } + case MENU_ITEM_ALLOW_CROSS_PROFILE_INTERACTION: { + boolean newState = !item.isChecked(); + if (newState) { + mCrossProfilePackages.add(mSelectedApp.getPackageName()); + } else { + mCrossProfilePackages.remove(mSelectedApp.getPackageName()); + } + try { + mService.setCrossProfilePackages(new ArrayList<>(mCrossProfilePackages)); + item.setChecked(newState); + } catch (RemoteException ignored) { + + } + return true; + } } return super.onContextItemSelected(item); diff --git a/app/src/main/java/net/typeblog/shelter/ui/CameraProxyActivity.java b/app/src/main/java/net/typeblog/shelter/ui/CameraProxyActivity.java deleted file mode 100644 index b8cc182..0000000 --- a/app/src/main/java/net/typeblog/shelter/ui/CameraProxyActivity.java +++ /dev/null @@ -1,90 +0,0 @@ -package net.typeblog.shelter.ui; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.net.Uri; -import android.os.Bundle; -import android.os.ParcelFileDescriptor; -import android.provider.MediaStore; - -import androidx.annotation.Nullable; - -import net.typeblog.shelter.util.Utility; - -import java.io.IOException; -import java.io.OutputStream; - -// This activity forwards ACTION_CAPTURE_IMAGE to ACTION_OPEN_DOCUMENT with image files -// which allows users to use Documents UI, and of course, Shelter's File Shuttle -// to pick images within apps that do not support ACTION_OPEN_DOCUMENT directly -// This will make cross-profile picture sharing a ton more easier. -// But here is the catch: sending images through this method will re-compress -// the image because Android's ACTION_CAPTURE_IMAGE requires returning a JPEG image -// this will in turn affect the quality of the image. -public class CameraProxyActivity extends Activity { - private static final int REQUEST_OPEN_IMAGE = 1001; - private Uri mOutputUri = null; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (!MediaStore.ACTION_IMAGE_CAPTURE.equals(getIntent().getAction())) { - finish(); - return; - } - - if (getIntent().hasExtra(MediaStore.EXTRA_OUTPUT)) { - // The calling app may or may not request for the full output image - mOutputUri = getIntent().getParcelableExtra(MediaStore.EXTRA_OUTPUT); - } - - // Launch Documents UI for picking images - Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setType("image/*"); // Only allow images - startActivityForResult(intent, REQUEST_OPEN_IMAGE); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { - if (requestCode == REQUEST_OPEN_IMAGE && resultCode == RESULT_OK && data != null) { - // The image is now opened. We should now read the data and send it to the other Uri - Uri imageUri = data.getData(); - try { - ParcelFileDescriptor fd = getContentResolver().openFileDescriptor(imageUri, "r"); - // Thumbnail is required by the definition of ACTION_CAPTURE_IMAGE - Bitmap thumbnail = Utility.decodeSampledBitmap(fd.getFileDescriptor(), 128, 128); - - if (mOutputUri != null) { - // The calling app may or may not request for the full image - // If requested, we write the image, in JPEG format, to the provided URI - // Note that JPEG is required by the interface. - Bitmap bmp = BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor()); - OutputStream out = getContentResolver().openOutputStream(mOutputUri); - - // Re-compress the image to another JPEG image through the output URI - bmp.compress(Bitmap.CompressFormat.JPEG, 100, out); - out.flush(); - out.close(); - } - - fd.close(); - Intent resultIntent = new Intent(); - resultIntent.putExtra("data", thumbnail); - setResult(RESULT_OK, resultIntent); - finish(); - return; - } catch (IOException e) { - // Just silently fail - } - } else { - super.onActivityResult(requestCode, resultCode, data); - } - - // We exit the activity anyway - setResult(RESULT_CANCELED); // If we succeeded, we should have returned earlier - finish(); - } -} diff --git a/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java b/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java index 15d8049..0c6d4d1 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java +++ b/app/src/main/java/net/typeblog/shelter/ui/MainActivity.java @@ -14,6 +14,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; +import androidx.activity.EdgeToEdge; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; @@ -74,6 +75,7 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + EdgeToEdge.enable(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setSupportActionBar(findViewById(R.id.main_toolbar)); diff --git a/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java b/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java index 435a38d..b0ce5a5 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java +++ b/app/src/main/java/net/typeblog/shelter/ui/SettingsActivity.java @@ -2,6 +2,7 @@ package net.typeblog.shelter.ui; import android.os.Bundle; +import androidx.activity.EdgeToEdge; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; @@ -10,6 +11,7 @@ import net.typeblog.shelter.R; public class SettingsActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + EdgeToEdge.enable(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings); setSupportActionBar(findViewById(R.id.settings_toolbar)); diff --git a/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java b/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java index dc0f274..8cbbce0 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java +++ b/app/src/main/java/net/typeblog/shelter/ui/SettingsFragment.java @@ -9,9 +9,16 @@ import android.os.Build; import android.os.Bundle; import android.os.RemoteException; import android.provider.Settings; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.preference.CheckBoxPreference; +import androidx.preference.DropDownPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; @@ -20,9 +27,7 @@ import net.typeblog.shelter.services.IShelterService; import net.typeblog.shelter.util.SettingsManager; import net.typeblog.shelter.util.Utility; -import mobi.upod.timedurationpicker.TimeDurationPicker; -import mobi.upod.timedurationpicker.TimeDurationPickerDialogFragment; -import mobi.upod.timedurationpicker.TimeDurationUtil; +import java.util.Arrays; public class SettingsFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener { private static final String SETTINGS_VERSION = "settings_version"; @@ -31,22 +36,34 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer private static final String SETTINGS_BUG_REPORT = "settings_bug_report"; private static final String SETTINGS_PATREON = "settings_patreon"; private static final String SETTINGS_CROSS_PROFILE_FILE_CHOOSER = "settings_cross_profile_file_chooser"; - private static final String SETTINGS_CAMERA_PROXY = "settings_camera_proxy"; private static final String SETTINGS_BLOCK_CONTACTS_SEARCHING = "settings_block_contacts_searching"; private static final String SETTINGS_AUTO_FREEZE_SERVICE = "settings_auto_freeze_service"; private static final String SETTINGS_AUTO_FREEZE_DELAY = "settings_auto_freeze_delay"; private static final String SETTINGS_SKIP_FOREGROUND = "settings_dont_freeze_foreground"; + private static final String SETTINGS_PAYMENT_STUB = "settings_payment_stub"; + + private static final int[] AUTO_FREEZE_DELAY_SECONDS = new int[]{0, 60, 2 * 60, 5 * 60}; private SettingsManager mManager = SettingsManager.getInstance(); private IShelterService mServiceWork = null; private CheckBoxPreference mPrefCrossProfileFileChooser = null; - private CheckBoxPreference mPrefCameraProxy = null; private CheckBoxPreference mPrefBlockContactsSearching = null; private CheckBoxPreference mPrefAutoFreezeService = null; private CheckBoxPreference mPrefSkipForeground = null; + private CheckBoxPreference mPrefPaymentStub = null; - private Preference mPrefAutoFreezeDelay = null; + private DropDownPreference mPrefAutoFreezeDelay = null; + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ViewCompat.setOnApplyWindowInsetsListener(view.findViewById(androidx.preference.R.id.recycler_view), (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPaddingRelative(0, 0, 0, insets.bottom); + return WindowInsetsCompat.CONSUMED; + }); + } @Override public void onCreatePreferences(Bundle bundle, String s) { @@ -77,19 +94,21 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer mPrefCrossProfileFileChooser = (CheckBoxPreference) findPreference(SETTINGS_CROSS_PROFILE_FILE_CHOOSER); mPrefCrossProfileFileChooser.setChecked(mManager.getCrossProfileFileChooserEnabled()); mPrefCrossProfileFileChooser.setOnPreferenceChangeListener(this); - mPrefCameraProxy = (CheckBoxPreference) findPreference(SETTINGS_CAMERA_PROXY); - mPrefCameraProxy.setChecked(mManager.getCameraProxyEnabled()); - mPrefCameraProxy.setOnPreferenceChangeListener(this); mPrefBlockContactsSearching = (CheckBoxPreference) findPreference(SETTINGS_BLOCK_CONTACTS_SEARCHING); mPrefBlockContactsSearching.setChecked(mManager.getBlockContactsSearchingEnabled()); mPrefBlockContactsSearching.setOnPreferenceChangeListener(this); + mPrefPaymentStub = (CheckBoxPreference) findPreference(SETTINGS_PAYMENT_STUB); + mPrefPaymentStub.setChecked(mManager.getPaymentStubEnabled()); + mPrefPaymentStub.setOnPreferenceChangeListener(this); // === Services === mPrefAutoFreezeService = (CheckBoxPreference) findPreference(SETTINGS_AUTO_FREEZE_SERVICE); mPrefAutoFreezeService.setChecked(mManager.getAutoFreezeServiceEnabled()); mPrefAutoFreezeService.setOnPreferenceChangeListener(this); mPrefAutoFreezeDelay = findPreference(SETTINGS_AUTO_FREEZE_DELAY); - mPrefAutoFreezeDelay.setOnPreferenceClickListener(this::openAutoFreezeDelayPicker); + mPrefAutoFreezeDelay.setOnPreferenceChangeListener(this); + mPrefAutoFreezeDelay.setEntries(Arrays.stream(AUTO_FREEZE_DELAY_SECONDS).mapToObj((it) -> getString(R.string.format_minutes, it / 60)).toArray(String[]::new)); + mPrefAutoFreezeDelay.setEntryValues(Arrays.stream(AUTO_FREEZE_DELAY_SECONDS).mapToObj(String::valueOf).toArray(String[]::new)); updateAutoFreezeDelay(); mPrefSkipForeground = (CheckBoxPreference) findPreference(SETTINGS_SKIP_FOREGROUND); mPrefSkipForeground.setChecked(mManager.getSkipForegroundEnabled()); @@ -101,11 +120,6 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer mPrefCrossProfileFileChooser.setEnabled(false); } - // Disable fake camera on R because third-party camera activities are now unsupported - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - mPrefCameraProxy.setEnabled(false); - } - // Disable FileShuttle for Android Go // as it requires SYSTEM_ALERT_WINDOW which // is not allowed on Go devices @@ -125,9 +139,7 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer } private void updateAutoFreezeDelay() { - mPrefAutoFreezeDelay.setSummary(TimeDurationUtil.formatMinutesSeconds( - ((long) mManager.getAutoFreezeDelay()) * 1000 - )); + mPrefAutoFreezeDelay.setSummary(getString(R.string.format_minutes, mManager.getAutoFreezeDelay() / 60)); } private boolean openSummaryUrl(Preference pref) { @@ -137,11 +149,6 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer return true; } - private boolean openAutoFreezeDelayPicker(Preference pref) { - new AutoFreezeDelayPickerFragment().show(getActivity().getFragmentManager(), "dialog"); - return true; - } - @Override public boolean onPreferenceChange(Preference preference, Object newState) { if (preference == mPrefCrossProfileFileChooser) { @@ -187,15 +194,16 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer mManager.setCrossProfileFileChooserEnabled(true); return true; - } else if (preference == mPrefCameraProxy) { - mManager.setCameraProxyEnabled(((boolean) newState)); - return true; } else if (preference == mPrefBlockContactsSearching) { mManager.setBlockContactsSearchingEnabled((boolean) newState); return true; } else if (preference == mPrefAutoFreezeService) { mManager.setAutoFreezeServiceEnabled((boolean) newState); return true; + } else if (preference == mPrefAutoFreezeDelay) { + mManager.setAutoFreezeDelay(Integer.parseInt((String) newState)); + updateAutoFreezeDelay(); + return true; } else if (preference == mPrefSkipForeground) { boolean enabled = (boolean) newState; if (!enabled) { @@ -216,6 +224,9 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer mManager.setSkipForegroundEnabled(true); return true; + } else if (preference == mPrefPaymentStub) { + mManager.setPaymentStubEnabled((boolean) newState); + return true; } else { return false; } @@ -239,23 +250,4 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Prefer return true; } } - - public static class AutoFreezeDelayPickerFragment extends TimeDurationPickerDialogFragment { - @Override - protected long getInitialDuration() { - return ((long) SettingsManager.getInstance().getAutoFreezeDelay()) * 1000; - } - - @Override - protected int setTimeUnits() { - return TimeDurationPicker.MM_SS; - } - - @Override - public void onDurationSet(TimeDurationPicker view, long duration) { - long seconds = duration / 1000; - if (seconds >= Integer.MAX_VALUE) return; - SettingsManager.getInstance().setAutoFreezeDelay((int) seconds); - } - } } diff --git a/app/src/main/java/net/typeblog/shelter/ui/SetupWizardActivity.java b/app/src/main/java/net/typeblog/shelter/ui/SetupWizardActivity.java index 8785570..64512fa 100644 --- a/app/src/main/java/net/typeblog/shelter/ui/SetupWizardActivity.java +++ b/app/src/main/java/net/typeblog/shelter/ui/SetupWizardActivity.java @@ -1,11 +1,15 @@ package net.typeblog.shelter.ui; +import androidx.activity.EdgeToEdge; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContract; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import android.app.admin.DevicePolicyManager; @@ -44,6 +48,7 @@ public class SetupWizardActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + EdgeToEdge.enable(this); super.onCreate(savedInstanceState); // The user could click on the "finish provisioning" notification while having removed // this activity from the recents stack, in which case the notification will start a new @@ -219,6 +224,25 @@ public class SetupWizardActivity extends AppCompatActivity { mWizard.setLayoutBackground(ContextCompat.getDrawable(inflater.getContext(), R.color.colorAccent)); return view; } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ViewCompat.setOnApplyWindowInsetsListener(mWizard, (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + + mWizard.setDecorPaddingTop(insets.top); + + NavigationBar nav = mWizard.getNavigationBar(); + ViewGroup.LayoutParams params = nav.getLayoutParams(); + params.height += insets.bottom; + + nav.setLayoutParams(params); + + nav.setPadding(nav.getPaddingLeft(), nav.getPaddingTop(), nav.getPaddingRight(), insets.bottom); + return WindowInsetsCompat.CONSUMED; + }); + } } protected static abstract class TextWizardFragment extends BaseWizardFragment { diff --git a/app/src/main/java/net/typeblog/shelter/util/LocalStorageManager.java b/app/src/main/java/net/typeblog/shelter/util/LocalStorageManager.java index 0753a1c..4292036 100644 --- a/app/src/main/java/net/typeblog/shelter/util/LocalStorageManager.java +++ b/app/src/main/java/net/typeblog/shelter/util/LocalStorageManager.java @@ -16,8 +16,8 @@ public class LocalStorageManager { public static final String PREF_AUTO_FREEZE_SERVICE = "auto_freeze_service"; public static final String PREF_DONT_FREEZE_FOREGROUND = "dont_freeze_foreground"; public static final String PREF_AUTO_FREEZE_DELAY = "auto_freeze_delay"; - public static final String PREF_CAMERA_PROXY = "camera_proxy"; public static final String PREF_BLOCK_CONTACTS_SEARCHING = "block_contacts_searching"; + public static final String PREF_PAYMENT_STUB = "payment_stub"; private static final String LIST_DIVIDER = ","; diff --git a/app/src/main/java/net/typeblog/shelter/util/SettingsManager.java b/app/src/main/java/net/typeblog/shelter/util/SettingsManager.java index e72b7cb..03f79ec 100644 --- a/app/src/main/java/net/typeblog/shelter/util/SettingsManager.java +++ b/app/src/main/java/net/typeblog/shelter/util/SettingsManager.java @@ -5,7 +5,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; -import net.typeblog.shelter.ui.CameraProxyActivity; +import net.typeblog.shelter.services.PaymentStubService; import net.typeblog.shelter.ui.DummyActivity; public class SettingsManager { @@ -47,7 +47,7 @@ public class SettingsManager { // Enforce all settings public void applyAll() { applyCrossProfileFileChooser(); - applyCameraProxy(); + applyPaymentStub(); } // Read and apply the enabled state of the cross profile file chooser @@ -59,15 +59,6 @@ public class SettingsManager { PackageManager.DONT_KILL_APP); } - // Read and apply the enabled state of the camera proxy - public void applyCameraProxy() { - boolean enabled = mStorage.getBoolean(LocalStorageManager.PREF_CAMERA_PROXY); - mContext.getPackageManager().setComponentEnabledSetting( - new ComponentName(mContext, CameraProxyActivity.class), - enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - } - // Set the enabled state of the cross profile file chooser public void setCrossProfileFileChooserEnabled(boolean enabled) { mStorage.setBoolean(LocalStorageManager.PREF_CROSS_PROFILE_FILE_CHOOSER, enabled); @@ -80,18 +71,6 @@ public class SettingsManager { return mStorage.getBoolean(LocalStorageManager.PREF_CROSS_PROFILE_FILE_CHOOSER); } - // Set the enabled state of the cross profile file chooser - public void setCameraProxyEnabled(boolean enabled) { - mStorage.setBoolean(LocalStorageManager.PREF_CAMERA_PROXY, enabled); - applyCameraProxy(); - syncSettingsToProfileBool(LocalStorageManager.PREF_CAMERA_PROXY, enabled); - } - - // Get the enabled state of the cross profile file chooser - public boolean getCameraProxyEnabled() { - return mStorage.getBoolean(LocalStorageManager.PREF_CAMERA_PROXY); - } - // Set the blocked state of cross-profile contacts searching public void setBlockContactsSearchingEnabled(boolean enabled) { mStorage.setBoolean(LocalStorageManager.PREF_BLOCK_CONTACTS_SEARCHING, enabled); @@ -140,4 +119,22 @@ public class SettingsManager { public boolean getSkipForegroundEnabled() { return mStorage.getBoolean(LocalStorageManager.PREF_DONT_FREEZE_FOREGROUND); } + + public boolean getPaymentStubEnabled() { + return mStorage.getBoolean(LocalStorageManager.PREF_PAYMENT_STUB); + } + + public void setPaymentStubEnabled(boolean enabled) { + mStorage.setBoolean(LocalStorageManager.PREF_PAYMENT_STUB, enabled); + applyPaymentStub(); + } + + // Enable / disable the payment stub component based on settings in local storage + public void applyPaymentStub() { + boolean enabled = mStorage.getBoolean(LocalStorageManager.PREF_PAYMENT_STUB); + mContext.getPackageManager().setComponentEnabledSetting( + new ComponentName(mContext, PaymentStubService.class), + enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + } } diff --git a/app/src/main/java/net/typeblog/shelter/util/Utility.java b/app/src/main/java/net/typeblog/shelter/util/Utility.java index d3e3eca..a42c439 100644 --- a/app/src/main/java/net/typeblog/shelter/util/Utility.java +++ b/app/src/main/java/net/typeblog/shelter/util/Utility.java @@ -189,7 +189,6 @@ public class Utility { DevicePolicyManager.FLAG_MANAGED_CAN_ACCESS_PARENT); // Allow ACTION_SEND and ACTION_SEND_MULTIPLE to cross from managed to parent - // TODO: Make this configurable IntentFilter actionSendFilter = new IntentFilter(); actionSendFilter.addAction(Intent.ACTION_SEND); actionSendFilter.addAction(Intent.ACTION_SEND_MULTIPLE); @@ -205,7 +204,6 @@ public class Utility { DevicePolicyManager.FLAG_PARENT_CAN_ACCESS_MANAGED); // Browser intents are allowed from work profile to parent - // TODO: Make this configurable, just as ALLOW_PARENT_PROFILE_APP_LINKING in the next function IntentFilter browsableIntentFilter = new IntentFilter(Intent.ACTION_VIEW); browsableIntentFilter.addCategory(Intent.CATEGORY_BROWSABLE); browsableIntentFilter.addDataScheme("http"); @@ -244,8 +242,6 @@ public class Utility { manager.setSecureSetting(adminComponent, Settings.Secure.INSTALL_NON_MARKET_APPS, "1"); } - // TODO: This should be configured by the user, instead of being enforced each time Shelter starts - // TODO: But we should also have some default restrictions that are set the first time Shelter starts manager.addUserRestriction(adminComponent, UserManager.ALLOW_PARENT_PROFILE_APP_LINKING); } diff --git a/app/src/main/res/drawable/bottom_navigation_color_selector.xml b/app/src/main/res/drawable/bottom_navigation_color_selector.xml index c7d4af1..7168a5f 100644 --- a/app/src/main/res/drawable/bottom_navigation_color_selector.xml +++ b/app/src/main/res/drawable/bottom_navigation_color_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_launcher_egg_foreground_monochrome.xml b/app/src/main/res/drawable/ic_launcher_egg_foreground_monochrome.xml new file mode 100644 index 0000000..2271135 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_egg_foreground_monochrome.xml @@ -0,0 +1,35 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9ef7b47..0f3e417 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -8,6 +8,7 @@ diff --git a/app/src/main/res/layout/activity_setup_wizard.xml b/app/src/main/res/layout/activity_setup_wizard.xml index 5c6ab51..44d8c48 100644 --- a/app/src/main/res/layout/activity_setup_wizard.xml +++ b/app/src/main/res/layout/activity_setup_wizard.xml @@ -1,8 +1,22 @@ - \ No newline at end of file + xmlns:app="http://schemas.android.com/apk/res-auto"> + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg.xml b/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg.xml new file mode 100644 index 0000000..172e313 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg_round.xml b/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg_round.xml new file mode 100644 index 0000000..172e313 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v31/ic_launcher_egg_round.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index fa8f944..9a582c5 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -45,7 +45,6 @@ تم تجميد جميع التطبيقات في قائمة \"التجميد التلقائي\" بنجاح. تم إنشاء اختصار لمشغلك. استنساخ تطبيقات غير تابعة للنظام إلى ملف شخصي آخر غير مدعوم حاليًّا على MIUI. الرجاء استنساخ متجر تطبيقات النظام (مثل متجر جوجل بلاي) في الملف الشخصي الآخر ثم تثبيت التطبيقات من هناك. - اختر ملف الصور التجميد التلقائي معلق سيقوم العازل بتجميد التطبيقات التي تم إطلاقها من \"إلغاء التجميد و الإطلاق\" في حدث قفل الشاشة التالي تلقائيًا. عملية على دفعة @@ -54,8 +53,6 @@ التفاعل مكوك الملفات عند التمكين، ستتمكن من تصفح / عرض / اختيار / نسخ الملفات من العازل إلى الملف الرئيسي والعكس، عن طريق المستندات (المسماة الملفات أو المستندات الموجودة على منصة الإطلاق) أو التطبيقات التي تحتوي على دعم واجهة مستخدم المستندات (لا تحصل إلا على الوصول المؤقت إلى الملفات التي تختارها في واجهة مستخدم المستندات)، في حين لا تزال تمتلك عزل نظام الملفات. - اختيار صورة كاميرا وهمية - قدم تطبيق كاميرا مزيف إلى التطبيقات الأخرى، مما يسمح لك باختيار صورة عشوائية من واجهة المستندات (و مكوك الملفات إذا تم تمكينه) كصورة ملتقطة. يؤدي ذلك إلى تمكين ميزة \"نقل الملفات\" لأي تطبيق يدعم استخدام تطبيقات كاميرا أخرى لالتقاط صورة، حتى إذا كانت لا تدعم واجهة المستندات. خدمات خدمة التجميد التلقائي عندما يتم قفل الشاشة، قم تلقائيًا بتجميد التطبيقات التي بدأت من اختصار \"إلغاء التجميد والبدأ\". diff --git a/app/src/main/res/values-ast/strings.xml b/app/src/main/res/values-ast/strings.xml index 598c2b9..d2ed64c 100644 --- a/app/src/main/res/values-ast/strings.xml +++ b/app/src/main/res/values-ast/strings.xml @@ -10,7 +10,6 @@ Siguir Serviciu d\'aislamientu d\'aplicaciones Shelter ha convertise n\'alministrador del preséu pa facer les xeres d\'aislamientu. - Escoyer una imaxe Afáyate en Shelter Shelter ye una aplicación que t\'ayuda a executar aplicaciones nun perfil aisláu. Esto ye posible per duana de la carauterística Perfil de trabayu d\'Android. \n @@ -76,8 +75,6 @@ Interaición Pasera de ficheros Al activar la opción, vas ser a restolar/ver/escoyer/copiar ficheros en Shelter dende\'l perfil principal y viceversa. NAMÁS pente la interfaz de Documentos (col nome de Ficheros o Documentos nel llanzador), o pente aplicaciones con sofitu pa la interfaz de Documentos qu\'acceden temporalmente a los ficheros qu\'escueyas nesa interfaz, ensin dexar de tar nel aislamientu del sistema de ficheros. - Selector d\'imáxenes como «Cámara» - Presenta una aplicación de cámara falsa que te permite escoyer una imaxe dende la interfaz de Documentos (y la pasera de ficheros si ta activada) como la semeya fecha. Esto activa la pasera de ficheros pa cualesquier aplicación que sofite l\'usu d\'aplicaciones de cámara pa facer semeyes, magar que nun sofiten nativamente la interfaz de Documentos. Bloquiar la busca de contautos Niega l\'accesu dende\'l perfil principal a los contautos del perfil de trabayu. Servicios diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 0e61183..0483f3a 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -1,9 +1,120 @@ - Vyber obrázek - Sbohem + Nashle Pokračovat Služba izolace aplikací - Shelter musí být správcem zařízení, aby mohl provádět úkoly. + Shelter musí být správcem zařízení, aby mohl fungovat. Vítejte v Shelteru + Pár slov o oprávněních + Shelter je aplikace, která pomáhá spouštět aplikace v izolovaném profilu. Dělá to za použití Pracovního profilu, který je součástí Androidu. +\n +\n +\nKlikni na \"Další\" a my ti poskytneme další informace o Shelter a provedeme tě procesem jeho nastavení. +\n +\nDoporučujeme, aby jsi si následující stránky pečlivě přečetl. + Je nám líto, že pro Vás nemůžeme Shelter nastavit. +\n +\nPakliže máte již nastavený Pracovní profil, buď z předchozí instalace Shelteru, nebo jiné aplikace, budete jej muset odstranit v Nastavení -> Účty předtím, než bude Shelter moci pokračovat. +\n +\nJinak, pokud jste nezrušili nastavení ručně, pak důvodem chyby je obvykle těžce upravený systém nebo rozpor mezi Shelterem a jinými správci Pracovního profilu. Bohužel, zde není nic, co s tím můžeme udělat. +\n +\nKlikněte na \"Další\" pro ukončení. + Ve výchozím stavu se Vás Shelter neptá na žádná individuální oprávnění. Nicméně, pokud budete pokračovat procesem nastavení, Shelter se pokusí nastavit Pracovní profil a proto se stane jeho správcem. +\n +\nTímto bude Shelteru udělen rozsáhlý seznam oprávnění v rámci tohoto profilu srovnatelný s profilem správce zařízení, i když omezený na tento profil. Bytí správcem profilu je nutné k většině funkcí Shelteru. +\n +\nNěkteré pokročilé funcke Shelteru můžou vyžadovat více oprávnění mimo Pracovní profil. Když budou potřeba, Shelter se na tato oprávnění zeptá samostatně, jakmile povolíte odpovídající funkce. + Kompatibilita + Shelter + Připraven? + Nyní jsme připraveni pro Vás nastavit Shelter. Nejdříve se prosím ujistěte, že Vaše zařízení není v režimu Nerušit, protože budete muset později kliknout na oznámení k dokonční nastavení. +\n +\nPokud jste připraveni, klikněte na \"Další\" pro zahájení procesu nastavení. + Rozmrazit a spustit + Automatické zamrznutí + Povolit widgety v hlavním profilu + Je vyžadována akce + Důležité pro Shelter + Klikněte zde pro dokončení nastavení Shelteru + Povolit interakci napříč profily + Vytvořit zkratku Dávkové zmrazení + Interakce + Služby + Shelter je vyvíjen a testován na AOSP Android zařízeních. To zahrnuje AOSP (Android Open Source Project), Google Android (na Pixelech), a mnoho na AOSP založených open-source operačních systémech (ROM) jako je LineageOS. Pokud Váš telefon běží na jednom z těchto Android derivátů zmíněných výše, pak gratuluji! Shelter bude na Vašem zařízení fungovat správně. +\n +\nNěkteří výrobci zařízení přichází s velice invazivními úpravami základního kódu Androidu, vedoucí k problémům, nekompatibilitě a neočekávanému chování. Některé vlastní ROM mohou také zavádět kompatibilitu narušující úpravy, ale většinou jsou to vzácnější případy ve srovnání s nekompatibilitami vytvořenými výrobci telefonů. +\n +\nShelter je pouze rozhraní pro Pracovní profil, jenž je funkcí poskytovanou operačním systémem. Pokud je tato funkce poskytovaná systémem rozbitá nebo nestandardní, Shelter nebude moci vyřešit takový problém sám. Pokud nyní používáte výrobcem upravenou verzi Androidu, o které se ví, že v ní nefungují Pracovní profily, byli jste upozorněni. Pokud i tak budete pokračovat, neexistuje garance, že Shelter se bude za těchto okolností chovat správně. + Manipulace se skrytými aplikacemi může způsobit pády a všechny druhy neočekávaného chování. Nicméně, tato funkce může být užitečná, pokud výrobcem upravená ROM nenabízí všechny systémové aplikace v pracovním profilu ve výchozím stavu. Pokračujete sami na sebe. + Pokud je povoleno, budete moci prohlížet / zobrazovat / vybírat / kopírovat mezi Shelterem a hlavním profilem a naopak, POUZE skrze rozhraní Dokumentů (nazýváno Soubory nebo dokumenty ve vašem spouštěči) nebo aplikace s podporou rozhraní Dokumentů (získají pouze dočasný přístup k souborům v rozhraní Dokumentů), stále při zachování izolace souborového systému. + Hlášení chyb / Sledování problémů + Hromadná akce + Naklonovat do hlavního profilu + Naklonovat do Shelteru (Pracovního profilu) + Zmrazit + Údaj o platební službě (NEPOUŽÍVAT) + Prosím čekejte… + Snažíme se zapnout Pracovní profil a nastavit Shelter. + Nastavení selhalo + Nainstalovat APK do Shelteru + Nyní byste měli dostat oznámení od Shelteru. Klikněte na něj k dokončení procesu nastavení. +\n +\nPokud žádné oznámení nevidíte, ujistěte se, že na Vašem zařízení není zapnutý režim Nerušit a zkuste stáhnou centrum oznámení. +\n +\nPokud chcete resetovat Shelter a začít od začátku, můžete odstranit data Shelteru v Nastavení. + Shelter právě běží … + Gratuluji! Jste jeden klik od dokončení nastavování Shelteru. + Služba Shelteru + Automatické zmrazení je pozdrženo + Shelter automaticky zamrazí aplikace spuštěné z \"Rozmrazit & Spustit\" při dalším zamčení obrazovky. + Ihned zmrazit + Instaluji... + Hlavní + Odinstalovat + Rozmrazit + Spustit + Vytvořit zkratku Rozmrazit a/nebo spustit + Hledat + Dávkové zmrazení + [Zamraženo] %s + Zmrazit + Instalace aplikace v pracovním profilu dokončena. + Zobrazit všechny aplikace + Otevřít rozhraní Dokumentů + Zamítnout přístup z hlavního profilu ke kontaktům uvnitř pracovního profilu. + Účtenka platební služby + Nastavení + Povolte v hlavním profilu falešnou platební službu NFC, aby byla v části Nastavení - NFC povolena. Tato možnost vám umožní vybrat platební aplikaci v pracovním profilu. Tím se obejde chyba systému Android, která znemožňuje výběr platební aplikace uvnitř pracovního profilu, pokud v hlavním profilu není žádná dostupná. + Služba automatického zmrazení + Prodleva automatického zamrznutí + Překlad + Nastavení Shelteru je kompletní. Nyní se Shelter restartuje. Pokud se nespustí automaticky, budete jej muset znova spustit z Vašeho spouštěče. + Oprávnění bylo zamítnuto nebo používáte nepodporované zařízení + Vypadá to, že jste vypnuli Pracovní režim během zapínání Shelteru. Pokud jste ho nyní povolili, prosím restartujte Shelter. + Aplikace \"%s\" úspěšně naklonována + Pokud je obrazovka uzamčena, automaticky zamrazit aplikace spuštěné ze zkratky \"Rozmrazit a Spustit\". + Výměna souborů + Aplikace \"%s\" úspěšně odinstalována + Nelze odinstalovat systémové aplikace v profilu, který Shelter nemá pod kontrolou. + Není možné přidat zkratku na Váš spuštěč. Prosím kontaktuje vývojáře pro další informace. + Operace pro %s + Všechny aplikace na seznamu \"Automatického zamrznutí\" byly úspěšně zamrazeny. + Zamezit hledání kontaktů + Na Vašem spouštěči byl vytvořen zástupce. + Není možné spustit aplikaci %s, protože nemá GUI. + Shelter potřebuje oprávnění Zobrazit přes ostatní aplikace pro správnou funkčnost Výměny souborů. Prosím, povolte jej pro OBĚ DVĚ (Osobní / Pracovní) aplikace Shelter zobrazené v dialogu poté, co stisknete \"Ok\". Toto oprávnění je využito pro spuštění služeb Výměny souborů na pozadí. + Přeskočit aplikace na popředí + NEZAMRAZIT aplikace na popředí (s viditelnou aktivitou) když zamknete obrazovku. Toto může být užitečné pro aplikace jako jsou přehrávače hudby, ale budete je muset poté zamrazit prostřednictvím zkratky \"Hromadné zamrznutí\". + O aplikaci + Verze + Zdrojový kód + Přesto pokračovat + Pracovní profil nenalezen. Restartujte prosím aplikaci pro opětovné nastavení profilu. + Nelze zjistit pracovní profil. Můžete to zkusit znovu restartováním Shelteru. + Aplikace \"%s\" úspěšně rozmrazena + Aplikace \"%s\" úspěšně zamrazena + Není možné naklonovat systémovou aplikaci, protože Shelter nad ní nemá kontrolu. + Shelter potřebuje oprávnění Statistiky využití pro provedení této akce. Prosím povolte oprávnění pro OBĚ DVĚ aplikace Shelteru zobrazené v dialogu poté, co stisnete \"Ok\". Pokud tak neučiníte, tato funkce nebude fungovat správně. + Shelter potřebuje přístup ke všem souborům pro funkci Výměny souborů. Prosím, udělte oprávnění pro OBĚ DVĚ (Osobní / Pracovní) aplikace Shelter zobrazené v dialogu poté, co stisknete \"Ok\". + Klonování nesystémových aplikací do jiného profilu není v tuto chvíli v MIUI k dispozici. Prosím, naklonujte systémový obchod s aplikacemi (např. Obchod Play) do druhého profilu a aplikace instalujte z něj. \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index d693cca..6c10fd2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -13,7 +13,6 @@ \nIm Laufe der Installation werden Sie eine Benachrichtigung zum Installationsabschluss erhalten, stellen Sie also sicher, dass Ihr Gerät NICHT im \"Bitte nicht stören\"-Modus ist. App-Isolations-Dienst Shelter muss Geräte-Administrator werden, um Apps isolieren zu können. - Wählen sie eine Bild-Datei aus Shelter - Achtung Klicken Sie hier, um die Installation von Shelter abzuschliessen Glückwunsch! Nur noch ein Klick und die Installation von Shelter ist abgeschlossen. @@ -47,10 +46,8 @@ Die Nutzung von Apps, die in der Liste ausgeblendet sind, kann zu Abstürzen und allem möglichen unerwartetem Verhalten führen. Dieses Feature kann aber nützlich sein, wenn vom Hersteller fehlerhaft angepasste ROMs nicht alle notwendigen System-Apps für das Arbeits-Profil zur Verfügung stellen. Wenn sie fortfahren, handeln Sie auf eigenes Risiko. Einstellungen Interaktion - File Shuttle - File Shuttle ermöglicht den Zugriff auf Dateien des persönlichen Profils vom Arbeits-Profil und umgekehrt. Man kann Dateien durchsuchen/ansehen/auswählen/kopieren. Dazu kann der systemeigene Datei-Manager oder auch Apps benutzt werden, die über diesen Dateizugriff haben. Diese Apps erhalten lediglich temporären Zugriff auf die ausgewählten Dateien, die eigentliche Dateisystem-Isolation bleibt bestehen. - Bildauswahl als vorgetäuschte Kamera verwenden - Wenn sie anderen Apps eine Pseudo-Kamera \"vorgaukeln\" kann Shelter ein beliebiges Bild aus dem Datei-Manager (und File Shuttle, sofern aktiviert) auswählen und dieses anderen Apps als \"aufgenommenes Bild\" präsentieren. Dies ermöglicht File Shuttle für jede Anwendung, die das Aufrufen anderer Kameraanwendungen unterstützt, ein Bild aufzunehmen, auch wenn diese einen Datei-Manager nicht nativ unterstützen. Sozusagen ein \"Umsetzer\". + Datei-Shuttle + Datei-Shuttle ermöglicht den Zugriff auf Dateien des persönlichen Profils vom Arbeitsprofil und umgekehrt. Sie können Dateien durchsuchen, ansehen, auswählen und kopieren. Dazu können der systemeigene Dateimanager oder auch Apps mit Dateizugriff benutzt werden. Diese Apps erhalten lediglich temporären Zugriff auf die ausgewählten Dateien, die eigentliche Dateisystem-Isolation bleibt bestehen. Dienste Auto-Frost Dienst Bei Bildschirmsperre automatisch Apps einfrosten, die über die Verknüpfung für \"Auftauen & Starten\" gestartet wurden. @@ -80,15 +77,15 @@ Eine Verknüpfung wurde Ihrem Startprogramm hinzugefügt. Shelter benötigt Zugriffsrechte auf Nutzungs-Statistiken. Bitte erteilen Sie die nötigen Zugriffsrechte für BEIDE Shelter Apps, die nach Klick auf \"OK\" im folgenden Dialog angezeigt werden. Bei Nichterteilung der Zugriffsrechte kann diese Programmfunktion nicht korrekt ausgeführt werden. Die Anwendung %s konnte nicht gestartet werden, das sie keine grafische Benutzeroberfläche hat. - Shelter benötigt Zugriff auf Alle Dateien um File Shuttle benutzen zu können. Bitte erteilen sie die notwendigen Zugriffsrechte für BEIDE (Persönliches-Profil / Arbeits-Profil) Shelter Apps, die nach dem Klick auf \"OK\" in der nachfolgenden Meldung angezeigt werden. - Damit File Shuttle korrekt funktioniert, muss Shelter über anderen Anwendungen eingeblendet werden können. Bitte erteilen sie die notwendigen Zugriffsrechte für BEIDE (Persönliches-Profil / Arbeits-Profil) Shelter Apps, die nach dem Klick auf \"OK\" in der nachfolgenden Meldung angezeigt werden. Diese Berechtigung wird genutzt, um die File Shuttle Dienste im Hintergrund starten zu können. + Shelter benötigt Zugriff auf Alle Dateien um Datei-Shuttle anbieten zu können. Bitte erteilen Sie die notwendigen Zugriffsrechte für BEIDE (persönliches Profil / Arbeitsprofil) Shelter-Apps, die nach dem Klick auf \"OK\" in der nachfolgenden Meldung angezeigt werden. + Damit der Datei-Shuttle korrekt funktioniert, muss Shelter über anderen Anwendungen eingeblendet werden können. Bitte erteilen Sie die notwendigen Zugriffsrechte für BEIDE (persönliches Profil / Arbeitsprofil) Shelter-Apps, die nach dem Klick auf \"OK\" in der nachfolgenden Meldung angezeigt werden. Diese Berechtigung wird genutzt, um die Datei-Shuttle-Dienste im Hintergrund zu starten. Das Klonen von Nicht-System-Apps in das Arbeits-Profil ist derzeit unter MIUI nicht möglich. Bitte klonen sie den App-Store Ihres Systems (z.B. Play Store) in ihr Arbeits-Profil und installieren sie ihre benötigten Anwendungen von dort aus. Trotzdem fortsetzen Übersetzung Datei-Manager-Oberfläche Blockiere Suche nach Kontakten Zugriff vom persönlichen Profil zu den Kontakten im Arbeitsprofil blockieren. - Bereit\? + Bereit? Bitte warten… Wir versuchen, das Arbeitsprofil zu initialisieren und Shelter auf deinem Gerät einzurichten. Einrichtung fehlgeschlagen @@ -98,30 +95,36 @@ \nWenn du die Benachrichtigung nicht siehst stelle sicher, dass dein Gerät nicht im \"Nicht stören\"-Modus ist und versuche, das Benachrichtigungspanel herunterzuziehen. \n \nUm Shelter zurückzusetzen und von vorne zu beginnen kannst du die Daten von Shelter in den Einstellungen löschen. - Shelter wurde auf AOSP-ähnlichen Android-Derivaten entwickelt und getestet. Diese schließen AOSP (Android Open Sourcr Project), Google Android (auf Pixels) sowie die meisten auf AOSP basierenden open-source-Custom-ROMs wie beispielsweise LineageOS ein. Wenn auf deinem Telefon eines der oben genannten Android-Derivate läuft, dann Glückwunsch! Shelter wird wahrscheinlich korrekt auf deinem Gerät funktionieren. + Shelter wurde auf AOSP-ähnlichen Android-Derivaten entwickelt und getestet. Diese schließen AOSP (Android Open Source Project), Google Android (auf Pixels) sowie die meisten auf AOSP basierenden open-source-Custom-ROMs wie beispielsweise LineageOS ein. Wenn auf deinem Telefon eines der oben genannten Android-Derivate läuft, dann Glückwunsch! Shelter wird wahrscheinlich korrekt auf deinem Gerät funktionieren. \n \nEinige Geräteanbieter fügen dem Android-Basiscode sehr tiefgehende Anpassungen hinzu, welche in Konflikten, Inkompatibilität und unerwartetem Verhalten enden können. Einige Custom-ROMs fügen ebenfalls kompatibilitätshindernde Änderungen hinzu, wobei diese seltener vorzufinden sind als anbieterverursachte Inkompatibilitäten. \n \nShelter ist lediglich eine Schnittstelle zur Arbeitsprofil-Funktion die das System bereitstellt. Wenn diese Systemfunktion kaputt oder nicht standardisiert ist, kann Shelter dieses Problem nicht auf magische Weise selbstständig beheben. Wenn du momentan eine durch den Anbieter modifizierte Androidversion nutzt, die für das Kaputtmachen der Arbeitsprofilfunktion bekannt ist: Du wurdest gewarnt. Du kannst trotzdem fortfahren, aber es gibt keine Garantie, dass Shelter unter diesen Umständen korrekt funktioniert. - Wir sind nun bereit, Shelter für dich einzurichten. Bitte stelle zuerst sicher, dass sich dein Gerät nicht im \"Nicht stören\"-Modus befindet, da du später eine Benachrichtigung antippen musst, um den Einrichtungsprozess abzuschließen. + Wir sind nun bereit, Shelter für dich einzurichten. Falls dein Gerät mit Android 7 oder älter läuft, stelle bitte zuerst sicher, dass sich dein Gerät nicht im \"Nicht stören\"-Modus befindet. Du wirst später eine Benachrichtigung antippen müssen, um den Einrichtungsprozess abzuschließen. \n \nWenn du bereit bist, tippe auf \"Weiter\", um den Einrichtungsprozess zu starten. Es tut uns leid dir mitzuteilen, dass es uns nicht gelungen ist, Shelter für dich einzurichten. \n -\nWenn du die Einrichtung nicht selbstständig abgebrochen hast ist der Grund für das Fehlschlagen höchstwahrscheinlich ein stark modifiziertes System oder ein Konflikt zwischen Shelter und anderen Arbeitsprofilverwaltern. Leider gibt es nicht viel, das wir diesbezüglich unternehmen können. +\nWenn dein Gerät bereits ein Arbeitsprofil hatte, entweder von einer früheren Installation von Shelter oder von einer anderen Anwendung, musst du dieses Profil unter Einstellungen -> Konto entfernen, bevor Shelter fortgesetzt werden kann. \n -\nTippe auf Weiter zum Beenden. +\nAndernfalls, wenn du die Einrichtung nicht selbstständig abgebrochen hast, ist der Grund für das Fehlschlagen höchstwahrscheinlich ein stark modifiziertes System oder ein Konflikt zwischen Shelter und anderen Arbeitsprofilverwaltern. Leider gibt es nicht viel, das wir diesbezüglich unternehmen können. +\n +\nTippe auf \"Weiter\" zum Beenden. Willkommen bei Shelter - Shelter ist eine Anwendung, die dir dabei hilft, andere Anwendungen in einem isolierten Profil auszuführen. Dies geschieht durch Nutzung der Arbeitsprofil-Funktionalität von Android. + Shelter ist eine Anwendung, mit der du andere Anwendungen in einem isolierten Profil ausführen kannst. Dazu nutzt es die Arbeitsprofil-Funktion von Android. \n -\nTippe auf \"Weiter\" und wir teilen dir mehr Informationen über Shelter mit und führen dich durch den Einrichtungsprozess. +\nKlicke auf \"Weiter\", und wir werden dich mit weiteren Informationen über Shelter versorgen und dich durch den Einrichtungsprozess führen. \n -\nWir empfehlen, dass du dir alle der folgenden Seiten aufmerksam durchliest. - Standardmäßig wird Shelter nicht nach irgendwelchen individuellen Berechtigungen fragen. Allerdings wird Shelter, nachdem du den Einrichtungsprozess beginnst, versuchen ein Arbeitsprofil einzurichten und wird infolgedessen Profilverwalter dieses Profils. +\nWir empfehlen dir, alle folgenden Seiten sorgfältig durchzulesen. + Standardmäßig wird Shelter nicht nach einzelnen Berechtigungen fragen. Allerdings wird Shelter, nachdem du den Einrichtungsprozess beginnst, versuchen ein Arbeitsprofil einzurichten und wird infolgedessen Profilverwalter dieses Profils. \n \nDies gibt Shelter eine umfangreiche Liste an Berechtigungen innerhalb des Profils, vergleichbar mit denen eines Geräteadministrators, allerdings beschränkt auf das Profil. Profilverwalter zu sein ist für die meisten Funktionen von Shelter zwingend nötig. \n \nEinige erweiterte Funktionen von Shelter benötigen eventuell mehr Berechtigungen außerhalb des Arbeitsprofils. Shelter wird beim Aktivieren der entsprechenden Funktionen separat nach diesen Berechtigungen fragen, sofern nötig. Kompatibilität Ein Wort zu den Berechtigungen + Profilübergreifende Interaktion erlauben + Zahlungsdienst Platzhalter (NICHT VERWENDEN) + Zahlungsdienst-Platzhalter + Richten Sie einen unechten NFC Zahlungsdienst im Hauptprofil ein, so dass die kontaktlosen Zahlungsoptionen unter Einstellungen - NFC aktiviert werden. So kann ein Zahlungsanbieter im Arbeitsprofil eingerichtet und gewählt werden. Damit wird ein Fehler in Android umgangen, der es unmöglich macht, im Arbeitsprofil einen Zahlungsanbieter auszuwählen, wenn kein Zahlungsdienst im Hauptprofil verfügbar ist. \ No newline at end of file diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 4e64578..af900c5 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -80,19 +80,16 @@ Κλωνοποίηση στο Shelter (Προφίλ Εργασίας) Πάγωσε Δημιούργησε συντόμευση \"Ξεπάγωσε και/ή τρέξε\" - Παρουσίαση μιας ψεύτικης κάμερας στις εφαρμογές, η οποία επιτρέπει την επιλογή μιας εικόνας μέσω της λειτουργίας \"Documents UI\" (ή της λειτουργίας \"Ευέλικτη Διαχείριση Αρχείων\", αν έχει ενεργοποιηθεί) και την παρουσίασή της σαν τη φωτογραφία που η υποτιθέμενη κάμερα τράβηξε. Αυτό επιτρέπει τη λειτουργία \"Ευέλικτη Διαχείριση Αρχείων\" για όλες τις εφαρμογές που υποστηρίζουν τη χρήση εφαρμογών κάμερας για λήψη φωτογραφιών, ακόμα και αν δεν υποστηρίζουν τη λειτουργία \"Documents UI\". Πάγωσε αυτόματα Το Shelter χρειάζεται την άδεια Usage Stats για την πραγματοποίηση αυτής της ενέργειας. Ενεργοποίησε την άδεια και για τις δύο εφαρμογές Shelter που θα εμφανιστούν στην επόμενη οθόνη, αφού πατήσεις \"ΟΚ\". Αν αυτό δεν πραγματοποιηθεί, ενδέχεται η εφαρμογή να μην λειτουργήσει σωστά. Δημιουργία συντόμευσης \"Πάγωσε ομαδικά\" Η εγκατάσταση εφαρμογής στο Προφίλ Εργασίας ολοκληρώθηκε. Η τροποποίηση εφαρμογών που είναι κρυμμένες από τη λίστα μπορεί να προκαλέσει διαφόρων ειδών προβλήματα. Ωστόσο, αυτή η δυνατότητα μπορεί να είναι χρήσιμη όταν λειτουργικά συστήματα (ROMs) που είναι τροποποιημένα από τον κατασκευαστή δεν ενεργοποιούν αυτόματα όλες τις απαραίτητες εφαρμογές συστήματος στο Προφίλ Εργασίας. Είσαι μόνος σου σε αυτό, αν επιλέξεις να συνεχίσεις. - Επιλογή εικόνας για ψεύτικη κάμερα Άρνηση πρόσβασης από το Κύριο Προφίλ στις επαφές του Προφίλ Εργασίας. Το Shelter χρειάζεται πρόσβαση σε όλα τα αρχεία για τη χρήση της λειτουργίας \"Ευέλικτη διαχείριση αρχείων\". Ενεργοποίησε την άδεια και για τις δύο εφαρμογές Shelter που θα εμφανιστούν στην επόμενη οθόνη, αφού πατήσεις \"ΟΚ\". Αντίο Συνέχεια Υπηρεσία απομόνωσης εφαρμογών - Επιλογή αρχείου εικόνας Καλώς όρισες στο Shelter Λίγα λόγια σχετικά με τα δικαιώματα της εφαρμογής Συμβατότητα diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 3590a63..7625746 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -7,7 +7,6 @@ Continuar Servicio de aislamiento de aplicaciones Shelter necesita convertirse en el administrador del dispositivo para realizar tareas de aislamiento. - Elige un archivo de imagen Importante Haz click aquí para finalizar la configuración de Shelter Manipular aplicaciones ocultas en la lista podría causar fallos y toda clase de comportamientos inesperados. Sin embargo, esta característica podría ser de utilidad cuando las ROMs personalizadas del fabricante no habilitan todas las aplicaciones del sistema necesarias dentro del perfil de trabajo por defecto. Si continuas, estas por tu cuenta. @@ -39,7 +38,6 @@ \nAlgunos fabricantes de dispositivos introducen personalizaciones demasiado invasivas dentro del código fuente de Android lo cual resulta en conflictos, incompatibilidades y comportamientos inesperados. Algunas ROMs personalizadas también pueden introducir cambios que rompen con la compatibilidad pero generalmente son raros en comparación con las incompatibilidades introducidas por los fabricantes. \n \nShelter es únicamente una interfaz a la característica del perfil de trabajo provista por el sistema. Si la característica provista por el sistema esta dañada o no es estándar Shelter no puede resolver el problema mágicamente por sí mismo. Si actualmente estas usando una versión de Android modificada por el fabricante de la cual se sabe que incumple con los perfiles de trabajo has sido advertido. Puedes proceder de todos modos, pero no hay garantía de que Shelter se comporte de manera adecuada bajo esas circunstancias. - Presenta una aplicación de cámara falsa a otras aplicaciones, permitiéndote elegir una imagen arbitraria de la interfaz de documentos (y a la pasarela de archivos, si se encuentra habilitado) como la fotografía tomada. Esto habilita la pasarela de archivos para cualquier aplicaciones que tenga soporte para invocar otras aplicaciones para tomar una fotografía incluso si no soportan la interfaz de documentos de manera nativa. No se pueden desinstalar aplicaciones del sistema en un perfil del cual Shelter no tiene control. No se pueden agregar accesos directos a tu lanzador de aplicaciones. Por favor contacta al desarrollador para mas información. Operaciones para \"%s\" @@ -79,7 +77,6 @@ Auto suspender Permitir Widgets en el perfil principal Cuando esta habilitado, seras capaz de buscar / ver / seleccionar / copiar archivos dentro de Shelter del perfil principal y viceversa. Únicamente a través de la interfaz de documentos (llamada Archivos o Documentos en tu lanzador de aplicaciones) o aplicaciones con soporte para interfaz de archivos (únicamente obtienen acceso temporal a los archivos que escogiste en la interfaz de documentos), mientras aun pertenecen al sistema de archivos aislado. - Selector de imágenes como simulador de cámara Bloquear búsqueda de contactos Denegar acceso del perfil principal a los contactos dentro del perfil de trabajo. Servicios @@ -102,7 +99,7 @@ \n \nTe sugerimos que leas todas las paginas siguientes cuidadosamente. Sobre los permisos - ¿Listo\? + ¿Listo? Compatibilidad Buscar Suspensión en lote diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml new file mode 100644 index 0000000..52f63f5 --- /dev/null +++ b/app/src/main/res/values-fa/strings.xml @@ -0,0 +1,115 @@ + + + قفل + نصب اپلیکیشن داخل پروفایل کاری تمام شد. + نمایش تمام برنامه‌ها + تنظیمات + تعامل + شاتل فایل + خدانگهدار + ادامه + جهت انجام پروسه‌ی ایزوله‌سازی شلتر (Shelter) لازم است که دسترسی Device Admin داشته باشد. + شلتر (Shelter) یک برنامه است که بتوانید اپلیکیشن های دیگر را در یک محیط ایزوله باز کنید. این عملیات با استفاده از قابلیت Work Profile اندروید امکان‌پذیر شده‌است. +\n +\nروی \"بعدی\" کلیک کنید تا ما اطلاعات بیشتری را درباره‌ی استفاده از شلتر در اختیار شما بگذاریم و همچنین در پروسه‌ی تنظیم برنامه شما را راهنمایی کنیم. +\n +\nپیشنهاد میکنیم تا همه‌ی صفحات بعدی را با دقت بخوانید. + به صورت پیش‌فرضف شلتر درخواستی برای دسترسی‌های خاص ندارد. اما با ورود به پروسه‌ی تنظیم برنامه، Shelter تلاش خواهد کرد که یک Work Profile را آماده کند، بنابراین، profile manager برای پروفایل مربوطه میشود. +\n +\nاین به Shelter تعداد زیادی دسترسی را در داخل پروفایل میدهد، چیزی مشابه Device Admin، اما محدود به آن پروفایل. Profile manager بودن برای اکثر قابلیت‌های Shelter ضروری است. +\n +\nبرخی قابلیت‌های ویژه‌ی Shelter ممکن از دسترسی‎‌هایی خارج از آن Work Profile را احتیاج داشته باشند. در صورت نیاز و زمانی که قابلیت‌های ویژه را روشن می‌کنید، Shelter برای این دسترسی‌ها به صورت مجزا درخواستی ارسال میکند. + شلتر روی نسخه‌های نظیر AOSP اندروید توسعه داده و تست شده است. این شامل AOSP (پروژه‌ی متن باز اندروید)، اندروید گوگل (روی پیکسل ها)، و اکثر کاستوم رام‌های بر پایه‌ی AOSP و متن‌ باز مانند LineageOS می‌باشد. اگر دستگاه شما روی یکی از نسخه‌های ذکر شده از اندروید اجرا می‌شود، تبریک میگیم! احتمالا Shelter روی دستگاه به درستی کار خواهد کرد. +\n +\nبعضی تولیدکنندگان دستگاه‌ها شخصی‌سازی های شدیدی روی پایه‌ی اندروید انجام می‌دهند که نتیجه‌ی آن وجود ناسازگاری‌ها و عملکرد غیرعادی می‌شود. بعضی کاستوم رام ها هم می‌توانند تغییرات سازگاری‌شکنی اعمال کرده باشند، اما به طور کلی این‌ها نسبت به تغییرات اعمال شده توسط تولیدکنندگان نادرتر هستند. +\n +\nشلتر صرفا یک سازه روی قابلیت Work Profile است که سیستم ارائه می‌دهد. اگر قابلیت ارائه‌شده خراب یا غیر استاندارد باشد، Shelter نمی‌تواند به تنهایی مشکل را حل کند. اگر از یک نسخه‌ای از اندروید که توسط تولیدکننده دستکاری شده است استفاده میکنید که قابلیت Work Profiles را از کار انداخته است، به شما اخطار داده شد. البته می‌توانید به هر حال به استفاده ادامه دهید، اما ضمانتی نیست که Shelter در این شرایط به‌طور عادی عمل کند. + متاسفانه باید بگوییم که امکان راه‌اندازی Shelter برا شما نیست. +\n +\nاگر دستگاه شما توسط یک نسخه‎‌ی قبل یا برنامه‌ای دیگر از قبل یک Work Profile داشته است، باید آن را در بخش تنظیمات -> حساب حذف کنید. +\n +\nدر غیر این صورت، اگر شما شخصا راه‌اندازی را قطع نکردید مشکل احتمال زیاد به خاطر یک سیستم با تغییرات شدید یا یک ناسازگاری بین Shelter و دیگر مدیریت‌کنندگان Work Profile است. متاسفانه کاری از دست ما بر نمی‌آید. +\n +\nبرای خروج روی \"بعدی\" کلیک کنید. + شما الآن باید یک پیغام (نوتیفیکیشن) از Shelter ببینید. لطفا روی آن پیغام کلیک کرده تا فرایند راه‌اندازی پایان یابد. +\n +\nاگر این پیغام را نمی‌بینید، مطمئن شوید که دستگاه شما روی حالت Do Not Disturb نبوده و سعی کنید بخش پیغام‌ها را به پایین بکشید. +\n +\nجهت بازگردانی Shelter و شروع از اول می‌توانید داده‌های برنامه را در تتظیمات پاک کنید. + Shelter برنامه‌های باز شده از \"شکستن قفل و باز کردن\" را در دستور قفل صفحه‌ی بعدی به طور خودکار قفل می‌کند. + ساخت میانبر قفل گروهی + نصب APK داخل شلتر + دستکاری برنامه‌هایی که داخل لیست نمایش داده نشده‌اند می‌تواند باعث خروج از برنامه و انواع دیگر مشکلات شود. البته این قابلیت می‌تواند در زمان وجود رام دستکاری شده توسط سازنده مفید شود اگر همه‌ی برنامه‌های سیستمی فعال نشده‌اند. اگر ادامه دهید، مسئولیت آن با خود شماست. + باز کردن بخش مستندات + اگر فعال شود تنها از طریق Documents UI (فایل‌ها و مستندات دارای نام داخل لانچر) یا برنامه‌های دارای قابلیت Documents UI (به مدت موقت به فایل هایی که انتخاب میکنید دسترسی میگیرند) می‌توانید از طریق Shelter، فایل های پروفایل اصلی را ببنید / انتخاب کنید و یا کپی کنید، در عین اینکه ساختار ایزوله را حفظ می‌کنیم. + در زمان قفل شدن صفحه، برنامه‌های پس‌زمینه‌ی قابل مشاهده را قفل نکن. این قابلیت برای برنامه‌های پخش موسیقی می‌تواند مفید باشد، اما ممکن است لازم باشد به طور دستی از \"میانبر قفل جمعی\" آنها را قفل کنید. + امکان آماده‌سازی پروفایل کاری نبود. برای تلاش دوباره برنامه را ریستارت کنید. + به نظر میاد شما Work Mode را هنگام راه‌ندازی شلتر غیرفعال کرده‌اید. اگر آن را فعال کرده‌اید، لطفا شلتر را دوباره باز کنید. + امکان کپی برنامه‌های سیستمی به یک پروفایل که شلتر کنترلی بر آن ندارد نیست. + برای اینکار، شلتر نیازمند دسترسی Usage Stats است. لطفا پس از کلیک کردن روی \"Ok\" داخل دیالوگ، این دسترسی را برای هر دوی اپ‌های شلتر فعال کنید. اگر اینکار انجام نگیرد این قابلیت به درستی کار نخواهد نکرد. + شلتر برای شاتل فایل نیازمند دسترسی به All Files دارد. لطفا این دسترسی را برای هر دوی برنامه‌های شلتر که با زدن روی \"Ok\" داخل دیالوگ نمایش داده می‌شود فعال کنید. + سرویس ایزوله‌سازی برنامه + به شلتر (Shelter) خوش آمدید + صحبتی درباره‌ی دسترسی ها + سازگاری + آماده‌اید؟ + اکنون آماده‌ی راه‌اندازی Shelter برای شما هستیم. اگر دستگاه شما دارای اندروید 7 یا کمتر است، مطمئن شوید که حالت Do Not Disturb روشن نیست، زیرا در ادامه لازم است روی یک پیغام (نوتیفیکشن) کلیک کنید تا مراحل راه‌اندازی تکمیل شوند. +\n +\nهروقت آماده بودید، روی \"بعدی\" کلیک کنید تا پروسه‎‌ی آماده‌سازی را شروع کنیم. + لطفا صبر کنید… + در حال تلاش برای راه اندازی Work Profile و Shelter روی دستگاه شما هستیم. + راه‌اندازی به مشکل خورد + اقدامی نیاز است + پیام مهم Shelter + اینجا کلیک کنید تا راه‌اندازی Shelter تکمیل شود + تبریک می‌گوییم! تنها یک کلیک با تکمیل راه‌اندازی Shelter فاصله دارید. + سرویس Shelter + Shelter در حال اجرا است … + منتظر قفل خودکار هستیم + قفل کن + در حال نصب... + اصلی + شلتر + %s قفل شده + عملیات جمعی + کپی به شلتر (Work Profile) + کپی به پروفایل اصلی + حذف نصب + قفل + رفع قفل + راه اندازی + رفع قفل و اجرا + قفل خودکار + آزاد کردن ویجت‌ها در پروفایل اصلی + جستجو + قفل جمعی + ساخت میانبر رفع قفل و یا اجرا کردن + بستن جستجوی مخاطبین + گرفتن دسترسی مخاطبین از پروفایل اصلی داخل پروفایل کاری. + سرویس‌ها + سرویس قفل خودکار + در زمان قفل بودن صفحه، به طور خودکار برنامه‌های باز شده از \"میانبر رفع قفل و باز کردن\" را قفل کن. + تاخیر قفل خودکار + رد کردن برنامه‌های ‎پیش‌زمینه + درباره + نسخه + سورس کد + ترجمه + گزارش مشکلات / ردیاب مشکلات + راه‌اندازی شلتر انجام شد. اکنون شلتر را ریستارت میکنیم. اگر برنامه به طور خودکار باز نشد، دوباره آن را باز کنید. + نبود دسترسی یا دستگار ناسازگار + پروفایل کاری یافت نشد. لطفا برنامه را ریستارت کنید تا پروفایل دوباره آماده شود. + برنامه %s با موفقیت حذف شده است + برنامه %s با موفقیت قفل شده است + برنامه %s با موفقیت کپی شده است + برنامه %s با موفقیت رفع قفل شده است + امکان حذف برنامه‌های سیستمی داخل یک پروفایل که شلتر کنترلی بر آن ندارد نیست. + امکان اضافه کردن میانبر به لانچر شما نیست. لطفا با توسعه‌دهنده تماس بگیرید. + عملیات‌ها برای %s + همه‌ی برنامه‌های داخل \"قفل خودکار\" با موفقیت قفل شدند. + میانبر داخل لانچر شما ساخته شد. + امکان باز کردن برنامه‌ی %s نیست زیرا رابط کاربری ندارد. + شلتر نیازمند نمایش روی دیگر برنامه‌ها است تا شاتل فایل به درستی عمل کند. لطفا پس از زدن روی \"Ok\" در دیالوگ نمایش داده شده این دسترسی را برای هر دوی برنامه‌های شلتر فعال کنید. این دسترسی امکان راه‌اندازی سرویس‌های شاتل فایل در پس زمینه را میدهد. + کپی کردن برنامه‌های سیستمی به پروفایل دیگر در حال حاضر در MIUI امکان‌پذیر نیست. لطفا اپلیکیشن فروشگاه برنامه‌های سیستم خود (مانند Play Store) را به یک پروفایل دیگر کپی کنید سپس برنامه‌ها را از آنجا نصب کنید. + ادامه دادن + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index d40ef26..7fa9161 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -4,7 +4,6 @@ Shelter Important Continuer Service d\'isolation d\'application - Choisissez un Fichier Image Cliquez ici pour finir de configurer Shelter Félicitations ! Vous êtes à un clic de finir de configurer Shelter. Service Shelter @@ -49,8 +48,6 @@ Afficher Toutes les Applications Paramètres Interaction - Sélecteur d\'image comme Fausse Caméra - Présente une fausse application de caméra aux autres applications, permettant de sélectionner une fausse capture depuis image arbitraire dans l\'interface de Gestion de Documents (et la Navigation de Fichiers si activée). Cela active la Navigation de Fichiers pour toute application supportant l\'utilisation d\'applications Camera tierces dans le but de prendre une photo, même si les applications appelantes ne supportent pas la navigation de Documents en natif. Bloquer la recherche de contacts Refuser au Profil Principal l\'accès aux contacts à l\'intérieur du Profil Professionnel. Services @@ -81,10 +78,10 @@ Opérations pour %s Toutes les applications de la liste \"Gel Automatique\" ont été gelées avec succès. Raccourci créé sur votre lanceur d\'applications. - Shelter à besoin de la permission <b>Statistiques d\'Usage</b> pour faire ça. S\'il vous plaît activez la permission pour <b>LES DEUX</b> applications Shelter dans la boite de dialogue affichée après avoir appuyé sur \"Ok\". Sinon cette fonctionnalité de pourra pas fonctionner correctement.Usage Stats permission to do this. Please enable the permission for BOTH OF THE TWO Shelter apps shown in the dialog after you press \"Ok\". Failing to do so will cause this feature to not work properly. + Shelter à besoin de la permission Statistiques d\'Usage pour faire ça. S\'il vous plaît activez la permission pour LES DEUX applications Shelter dans la boite de dialogue affichée après avoir appuyé sur \"Ok\". Sinon cette fonctionnalité de pourra pas fonctionner correctement. Impossible de lancer l\'application %s car elle n\'a pas d\'interface graphique. - Shelter doit accéder à <b>Tous les Fichiers</b> pour la Navigation de Fichiers. Veuillez activer l\'autorisation pour <b>LES DEUX</b> applications Shelter (personnelle / professionnelle) dans la boîte de dialogue affichée après avoir appuyé sur \"Ok\".All Files for File Shuttle. Please enable the permission for BOTH OF THE TWO (Personal / Work) Shelter apps shown in the dialog after you press \"Ok\". - Shelter doit <b>Dessiner par dessus les autres applications</b> pour que la Navigation de Fichier fonctionne correctement. Veuillez activer l\'autorisation pour <b>LES DEUX</b> applications Shelter (personnelle / professionnelle) dans la boîte de dialogue affichée après avoir appuyé sur \"Ok\". Cette autorisation est utilisée pour démarrer les services de Navigation de Fichiers en arrière-plan.Draw over Other Apps in order for File Shuttle to function correctly. Please enable the permission for BOTH OF THE TWO (Personal / Work) Shelter apps shown in the dialog after you press \"Ok\". This permission is used to start File Shuttle services in the background. + Shelter doit accéder à Tous les Fichiers pour la Navigation de Fichiers. Veuillez activer l\'autorisation pour LES DEUX applications Shelter (personnelle / professionnelle) dans la boîte de dialogue affichée après avoir appuyé sur \"Ok\". + Shelter doit Dessiner par dessus les autres applications pour que la Navigation de Fichier fonctionne correctement. Veuillez activer l\'autorisation pour LES DEUX applications Shelter (personnelle / professionnelle) dans la boîte de dialogue affichée après avoir appuyé sur \"Ok\". Cette autorisation est utilisée pour démarrer les services de Navigation de Fichiers en arrière-plan. Le clonage d\'applications non système vers un autre profil n\'est actuellement pas possible sur MIUI. Veuillez cloner la boutique d\'applications de votre système (par exemple, <b>Play Store</b>) dans l\'autre profil, puis installer les applications à partir de là.Play Store) into the other profile and then install apps from there. Continuer quand même Navigation de Documents @@ -105,7 +102,7 @@ Bienvenue dans Shelter Un point sur les permissions Compatibilité - Prêt(e) \? + Prêt(e) ? Shelter est une application permettant d\'exécuter d\'autres application à l\'intérieur d\'un compartiment isolé. Pour cela, elle utilise la fonctionnalité <b>Profil Professionnel<b> d\'Android. \n \nAppuyez sur \"Suivant\", afin que nous puissions vous fournir de plus amples informations sur Shelter et vous guider dans le processus de configuration. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index 22054bb..fc095ac 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -4,7 +4,6 @@ Lanjutkan Shelter harus menjadi Admin Perangkat untuk melakukan tugas isolasinya. Layanan Isolasi Aplikasi - Pilih File Gambar Selamat datang di Shelter Sepatah kata tentang izin Shelter adalah aplikasi untuk membantu Anda menjalankan aplikasi lain dalam profil yang terisolasi. Ia melakukannya dengan memanfaatkan fitur Profil Kerja Android. @@ -12,4 +11,109 @@ \nKlik \"Selanjutnya\", dan kami akan memberi Anda informasi tentang Shelter dan petunjuk untuk menyelesaikan proses pengaturan. \n \nKami menyarankan Anda membaca semua halaman berikut dengan cermat. + Buka Aplikasi Dokumen + Pengaturan + Interaksi + Penyimpanan Shuttle + Tidak dapat mencopot pemasangan aplikasi sistem di profil yang tidak dapat dikontrol oleh Shelter. + Otomatis Bekukan + Izinkan Widget di Profil Utama + Pencarian + Pengelompokan Pembekuan + Buat Kelompok Pintasan Pembekuan + Bekukan + Pasang APK ke Shelter + Penginstalan aplikasi selesai di profil kerja. + Lihat Semua Aplikasi + Kesesuaian + Siap? + Silakan tunggu. . . + Kami mencoba menginisialisasi Work Profile dan menyiapkan Shelter di perangkat Anda. + Penyiapan gagal + Diperlukan tindakan + Anda sekarang akan melihat notifikasi dari Shelter. Silakan klik notifikasi itu untuk menyelesaikan proses penyiapan. +\n +\nJika Anda tidak melihat notifikasi, pastikan perangkat Anda tidak dalam mode Jangan Ganggu dan coba turunkan pusat notifikasi. +\n +\nUntuk menyetel ulang Shelter dan memulai kembali, Anda dapat menghapus data Shelter di Setelan. + Penampungan Penting + Klik di sini untuk menyelesaikan penyiapan Shelter + Selamat! Anda hanya perlu satu klik untuk menyelesaikan penyiapan Shelter. + Layanan Shelter + Shelter sekarang berjalan … + Pembekuan otomatis tertunda + Shelter akan membekukan aplikasi secara otomatis yang diluncurkan dari \"Cairan & Luncurkan\" pada acara penguncian layar berikutnya. + Bekukan Sekarang + Memasang... + Utama + Shelter + [Bekukan] %s + Kelompok operasi + Salin ke Shelter (Profil Kerja) + Salin ke Profil Utama + Copot + Bekukan + Cairkan + Jalankan + Buat Pencairan dan/atau Luncurkan Pintasan + Cairkan dan Luncurkan + Blokir Pencarian Kontak + Tolak akses dari profil utama ke kontak di dalam profil kerja. + Layanan + Layanan Pembekuan Otomatis + Saat layar terkunci, secara otomatis bekukan aplikasi yang diluncurkan dari \"Cabut & Luncurkan Pintasan\". + Penundaan Pembekuan Otomatis + Lewati Aplikasi Latar Depan + Tentang + Versi + Kode Sumber + Terjemah + Laporan Masalah / Pelacak Masalah + Pengaturan tempat berlindung selesai. Sekarang memulai kembali Shelter. Jika Shelter tidak memulai secara otomatis, Anda dapat meluncurkannya lagi dari peluncur. + Izin ditolak atau Perangkat tidak didukung + Profil kerja tidak ditemukan. Mulai ulang aplikasi untuk menyediakan ulang profil. + Tidak dapat menyediakan profil kerja. Anda dapat mencoba lagi dengan memulai ulang Shelter. + Aplikasi \"%s\" berhasil digandakan + Aplikasi \"%s\" berhasil dihapus instalasinya + Aplikasi \"%s\" berhasil dibekukan + Aplikasi \"%s\" berhasil dicairkan + Tidak dapat mengkloning aplikasi sistem ke profil yang tidak dapat dikontrol oleh Shelter. + Tidak dapat menambahkan pintasan ke peluncur Anda. Silakan hubungi pengembang untuk informasi lebih lanjut. + Operasi untuk %s + Semua aplikasi dalam daftar \"Bekukan Otomatis\" telah berhasil dibekukan. + Pintasan dibuat di peluncur Anda. + Tidak dapat meluncurkan aplikasi %s karena tidak memiliki GUI. + Tetap lanjutkan + Secara bawaan, Shelter tidak akan meminta izin individu apa pun. Namun, setelah Anda melanjutkan proses penyiapan, Shelter akan mencoba menyiapkan Profil Kerja dan karenanya menjadi pengelola profil profil tersebut. +\n +\nIni akan memberi Shelter daftar panjang izin di dalam profil, sebanding dengan Admin Perangkat, meskipun terbatas pada profil. Menjadi pengelola profil diperlukan untuk sebagian besar fungsi Shelter. +\n +\nBeberapa fitur lanjutan Shelter mungkin memerlukan lebih banyak izin di luar Profil Kerja. Saat dibutuhkan, Shelter akan meminta izin tersebut secara terpisah saat Anda mengaktifkan fitur yang sesuai. + Shelter dikembangkan dan diuji pada turunan Android mirip AOSP. Ini termasuk AOSP (Proyek Sumber Terbuka Android), Google Android (pada Piksel), dan kebanyakan ROM kustom sumber terbuka berbasis AOSP seperti LineageOS. Jika ponsel Anda menjalankan salah satu turunan Android yang tercantum di atas, selamat! Shelter mungkin akan berfungsi dengan benar di perangkat Anda. +\n +\nBeberapa vendor perangkat memperkenalkan penyesuaian yang sangat invasif ke dalam basis kode Android, yang mengakibatkan konflik, ketidakcocokan, dan perilaku yang tidak terduga. Beberapa ROM kustom juga dapat memperkenalkan perubahan yang merusak kompatibilitas, tetapi umumnya ini jarang terjadi dibandingkan dengan ketidakcocokan yang diperkenalkan oleh vendor ponsel. +\n +\nShelter hanyalah antarmuka ke fitur Work Profile yang disediakan oleh sistem. Jika fitur yang disediakan oleh sistem rusak atau tidak standar, Shelter tidak dapat secara ajaib menyelesaikan masalahnya sendiri. Jika saat ini Anda menggunakan versi Android modifikasi vendor yang diketahui dapat merusak Profil Kerja, Anda telah diperingatkan. Anda tetap dapat melanjutkan, tetapi tidak ada jaminan bahwa Shelter akan bertindak dengan benar dalam situasi seperti ini. + Kami sekarang siap menyiapkan Shelter untuk Anda. Jika perangkat Anda menjalankan Android 7 atau lebih rendah, pertama-tama pastikan bahwa perangkat Anda tidak dalam mode Jangan Ganggu, karena nanti Anda harus mengeklik pemberitahuan untuk menyelesaikan proses penyetelan. +\n +\nSaat Anda siap, klik \"Berikutnya\" untuk memulai proses penyiapan. + Dengan menyesal kami memberi tahu Anda bahwa kami tidak dapat menyiapkan Shelter untuk Anda. +\n +\nJika perangkat Anda sudah memiliki Profil Kerja, baik dari penginstalan Shelter sebelumnya atau dari aplikasi lain, Anda harus menghapus profil tersebut di Pengaturan -> Akun sebelum Shelter dapat melanjutkan. +\n +\nJika tidak, jika Anda tidak membatalkan penyiapan secara manual, maka penyebab kegagalan biasanya karena sistem yang banyak dimodifikasi, atau konflik antara Shelter dan pengelola Work Profile lainnya. Sayangnya, tidak banyak yang bisa kami lakukan terkait hal ini. +\n +\nKlik \"Selanjutnya\" untuk keluar. + Memanipulasi aplikasi yang disembunyikan dari daftar dapat menyebabkan crash dan segala macam perilaku tak terduga. Namun, fitur ini dapat berguna saat ROM yang disesuaikan dengan vendor tidak mengaktifkan semua aplikasi sistem yang diperlukan di profil kerja secara default. Jika Anda melanjutkan, Anda sendirian. + Saat diaktifkan, Anda akan dapat menelusuri/melihat/memilih/menyalin file di Shelter dari profil utama dan sebaliknya, HANYA melalui UI Dokumen (bernama File atau Dokumen di peluncur Anda) atau aplikasi dengan dukungan UI Dokumen (mereka hanya mendapatkan akses sementara ke file yang Anda pilih di Documents UI), sementara masih berkaitan dengan isolasi sistem file. + JANGAN membekukan aplikasi latar depan (dengan aktivitas yang terlihat) saat Anda mengunci layar. Ini dapat berguna untuk aplikasi seperti pemutar musik, tetapi Anda harus membekukannya secara manual melalui \"Pintasan Pembekuan Batch\" setelahnya. + Sepertinya Anda telah menonaktifkan Mode Kerja saat memulai Shelter. Jika Anda telah mengaktifkannya sekarang, harap mulai kembali Shelter. + Shelter memerlukan izin Statistik Penggunaan untuk melakukan ini. Harap aktifkan izin untuk KESELURUHAN aplikasi Shelter yang ditampilkan di dialog setelah Anda menekan \"Ok\". Gagal melakukannya akan menyebabkan fitur ini tidak berfungsi dengan baik. + Shelter memerlukan akses ke Semua File untuk File Shuttle. Harap aktifkan izin untuk KESELURUHAN (Pribadi / Kantor) aplikasi Shelter yang ditampilkan dalam dialog setelah Anda menekan \"Ok\". + Shelter harus Draw over Other Apps agar File Shuttle berfungsi dengan benar. Harap aktifkan izin untuk KESELURUHAN (Pribadi / Kantor) aplikasi Shelter yang ditampilkan dalam dialog setelah Anda menekan \"Ok\". Izin ini digunakan untuk memulai layanan File Shuttle di latar belakang. + Mengkloning aplikasi non-sistem ke profil lain saat ini tidak dimungkinkan di MIUI. Harap gandakan toko aplikasi sistem Anda (mis. Play Store) ke profil lain, lalu instal aplikasi dari sana. + Rintisan Layanan Pembayaran (JANGAN GUNAKAN) + Rintisan Layanan Pembayaran + Aktifkan layanan pembayaran NFC palsu di profil utama, sehingga opsi pembayaran nirsentuh di bawah Pengaturan - NFC diaktifkan untuk memungkinkan Anda memilih aplikasi pembayaran di dalam profil kerja. Ini mengatasi bug Android yang membuat aplikasi pembayaran di dalam profil kerja tidak dapat dipilih jika tidak ada yang tersedia di profil utama. + Izinkan Interaksi Lintas Profil \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bd4c17a..20cf890 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -4,7 +4,6 @@ Continua Servizio di isolazione app Shelter ha bisogno di diventare amministratore del dispositivo per eseguire l\'isolamento delle app. - Scegli un\'immagine Notifiche importanti Premi qui per finire la configurazione di Shelter Congratulazioni! Ti manca solo un passo per finire la configurazione di Shelter. @@ -33,7 +32,6 @@ Apri interfaccia dei documenti Interazione Shuttle dei file - Seleziona l\'immagine per la falsa fotocamera Serve i permessi di Amministratore Dispositivo per far funzionare Shelter. Riprovare. Blocca la ricerca dei contatti Impedisci l\'accesso dal profilo principale ai contatti dentro il profilo lavorativo. @@ -81,7 +79,6 @@ Operazione in massa Crea una scorciatoia di scongelamento e/o avvio Crea una scorciatoia di congelamento in massa - Presenta una falsa app per la fotocamera alle altre app, permettendoti di scegliere qualunque immagine dai documenti (e dallo Shuttle dei file se attivo) come se fosse una foto scattata. Ciò abilita lo Shuttle dei file per qualsiasi app che supporti l\'invocazione di altre app fotocamera per scattare una foto, anche se non supporta nativamente l\'interfaccia dei documenti. Installa l\'APK in Shelter NON congelare le app in primo piano (con attività visibile) quando si blocca lo schermo. Ciò può essere utile per app come i riproduttori musicali, ma poi dovrai congelarle a mano tramite \"Scorciatoia di congelamento in massa\". Shelter ha bisogno dell\'autorizzazione Statistiche d\'uso per farlo. Attiva l\'autorizzazione per ENTRAMBE le app di Shelter mostrate nella finestra dopo aver premuto \"Ok\". Altrimenti questa funzione non funzionerà correttamente. @@ -111,7 +108,7 @@ Benvenuti in Shelter Una parola in merito alle autorizzazioni Compatibilità - Iniziamo\? + Iniziamo? Attendere prego… Stiamo provando a inizializzare il Profilo di Lavoro e configurare Shelter sul tuo dispositivo. Shelter è un\'app che ti permette di usare altre applicazioni in un profilo isolato. Tutto questo viene fatto sfruttando la funzione Profilo di Lavoro di Android. diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index b8dbf18..db71e65 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -1,7 +1,6 @@ להמשיך - בחר קובץ תמונה ברוכים הבאים Shelter מילה על הרשאות תאימות @@ -15,8 +14,8 @@ \nאנו ממליצים לקרוא בעיון את כל העמודים הבאים. אפשר ווידג\'טים בפרופיל הראשי התקנת האפליקציה הסתיימה בפרופיל העבודה. - מוכן\? - כעת אנו מוכנים להקים עבורך את Shelter. תחילה ודא שהמכשיר שלך לא במצב \'נא לא להפריע\', מכיוון שתצטרך ללחוץ על הודעה מאוחר יותר כדי לסיים את תהליך ההגדרה. + מוכן? + כעת אנו מוכנים להקים עבורך את Shelter. אם המכשיר שלך פועל עם אנדרואיד 7 ומטה, אנא ודא תחילה שהמכשיר שלך לא במצב \'נא לא להפריע\', מכיוון שתצטרך ללחוץ על הודעה מאוחר יותר כדי לסיים תהליך ההגדרה. \n \nכשתהיה מוכן, לחץ על \"הבא\" כדי להתחיל בתהליך ההגדרה. נא להמתין… @@ -77,7 +76,6 @@ הגדרות אינטראקציה מעבורת קבצים - בוחר תמונה כמצלמה מזויפת לא ניתן להסיר את ההתקנה של אפליקציות מערכת בפרופיל של-Shelter אין שליטה עליו. חסום חיפוש אנשי קשר שירותים @@ -111,7 +109,6 @@ כאשר המסך נעול, הקפיא אוטומטית אפליקציות שהופעלו מ\"בטל הקפאה והפעל קיצור דרך\". מניפולציה של אפליקציות המוסתרות מהרשימה עלולה לגרום לקריסות ולכל מיני התנהגות בלתי צפויה. עם זאת, תכונה זו יכולה להיות שימושית כאשר ROMs פגומים המותאמים אישית של ספקים אינם מפעילים את כל אפליקציות המערכת הנחוצות בפרופיל העבודה כברירת מחדל. אם תמשיך, אתה לבד. כאשר מופעל, תוכל לדפדף / להציג / לבחור / להעתיק קבצים ב-Shelter מהפרופיל הראשי ולהיפך, רק דרך ממשק המשתמש של מסמכים (ששמו קבצים או מסמכים במפעיל שלך) או אפליקציות עם תמיכה בממשק המשתמש של מסמכים (הם רק מרוויחים גישה זמנית לקבצים שתבחר בממשק המשתמש של מסמכים), תוך שמירה על בידוד מערכת הקבצים. - הצג אפליקציית מצלמה מזויפת לאפליקציות אחרות, מה שמאפשר לך לבחור תמונה שרירותית מממשק המשתמש של המסמכים (ומעבורת הקבצים אם מופעלת) בתור התמונה שצולמה. זה מאפשר העברת קבצים עבור כל אפליקציה שתומכת בהפעלת אפליקציות מצלמה אחרות כדי לצלם תמונה, גם אם הן אינן תומכות בממשק המשתמש המקורי של מסמכים Shelter זקוק להרשאת סטטיסטיקות שימוש כדי לעשות זאת. אנא הפעל את ההרשאה עבור אפליקציות מקלט שתיים המוצגות בתיבת הדו-שיח לאחר לחיצה על \"אישור\". אם לא תעשה זאת, תכונה זו לא תפעל כראוי. Shelter זקוק לגישה אל כל הקבצים עבור סייר הקבצים. אנא הפעל את ההרשאה עבור יישומי מקלט שניים (אישי / עבודה) המוצגים בתיבת הדו-שיח לאחר לחיצה על \"אישור\". Shelter צריך לצייר מעל אפליקציות אחרות כדי ש-File Shuttle יפעל כהלכה. אנא הפעל את ההרשאה עבור יישומי מקלט שניים (אישי / עבודה) המוצגים בתיבת הדו-שיח לאחר לחיצה על \"אישור\". הרשאה זו משמשת להפעלת שירותי File Shuttle ברקע. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 00a75e6..88f6735 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -4,7 +4,6 @@ 続行 アプリ隔離サービス 隔離処理を行うためにShelterをデバイス管理者に設定する必要があります。 - 画像ファイルを選択 Shelterの重要な通知 タップしてShelterのセットアップを完了してください おめでとうございます!Shelterのセットアップ完了まであと一歩です。 @@ -34,7 +33,6 @@ 全てのアプリを表示 標準ファイラーを開く 設定 - フェイクカメラで使用する画像を選択 連絡先の検索をブロック サービス 自動凍結サービス @@ -98,9 +96,8 @@ セットアップに失敗しました 操作が必要です Shelterへようこそ - 他のアプリに偽のカメラアプリを提示し、Documents UI(および有効な場合はFile Shuttle)から任意の画像を撮影画像として選択できるようにします。これにより、Documents UIをネイティブにサポートしていなくても、他のカメラアプリを呼び出して写真を撮ることをサポートするすべてのアプリでFile Shuttleが有効になります。 画面をロックしたときに、フォアグラウンドのアプリ(アクティビティが表示されているもの)を凍結しない。これは音楽プレーヤーなどのアプリには便利ですが、その後「バッチフリーズ・ショートカット」を使って手動で凍結する必要があります。 - これで、Shelterの設定が完了しました。セットアッププロセスを完了させるには、後で通知をタップする必要があるため、まずお使いのデバイスがサイレントモードになっていないことを確認してください。 + これで、Shelterの設定が完了しました。Android 7以下の端末の場合、セットアッププロセスを完了させるには、後で通知をタップする必要があるため、まずお使いのデバイスがサイレントモードになっていないことを確認してください。 \n \n準備ができたら、「次へ」をタップして、セットアッププロセスを開始します。 権限についてひとこと diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index c224743..2f2f517 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -7,7 +7,7 @@ 권한 관련 안내 다음 화면 잠금이 실행될 때 Shelter가 \"활성화 후 실행\"을 통해 실행된 앱을 자동으로 비활성화 처리합니다. 활성화 - 준비되셨나요\? + 준비되셨나요? 설정 실패 수동 조치 필요 Shelter 알림 @@ -33,7 +33,6 @@ 모든 앱 보이기 앱이 직장 프로필에 설치되었습니다. 프로필 간 파일 공유 - 위장 카메라 앱을 통한 이미지 탐색 자동 비활성화 서비스 자동 비활성화 대기 시간 포어그라운드 실행 중인 앱 제외하기 @@ -52,14 +51,12 @@ %s 앱에 대해 수행할 작업 \"자동 비활성화\" 목록에 등록된 모든 앱이 비활성화되었습니다. 계속 진행 - 현재 MIUI 환경에서는 비 시스템 앱을 다른 프로필로 복제하는 기능이 지원되지 않습니다. 현재 시스템의 앱 스토어(예시: Play Store)를 다른 프로필로 복제하신 후 복제된 앱 스토어 애플리케이션에서 앱을 내려받아 주세요. - 이미지 파일 고르기 + 현재 MIUI 환경에서는 비 시스템 앱을 다른 프로필로 복제하는 기능이 지원되지 않습니다. 현재 시스템의 앱 스토어(Play Store 등)를 다른 프로필로 복제하신 후 복제된 앱 스토어 애플리케이션에서 앱을 내려받아 주세요. Shelter가 격리 작업을 진행하려면 기기 관리자 권한을 필요로 합니다. - 이 기능을 활성화하면 개인 및 직장 프로필에서 각각 상대 프로필의 파일에 접근하거나 상대 프로필 간 파일 작업을 할 수 있습니다. 이 기능은 파일 시스템 간 격리를 유지한 상태에서 문서 사용자 인터페이스(Documents UI, 보통 \"파일\" 또는 \"문서\"라는 이름을 가진 기본 파일 관리자 앱) 또는 문서 사용자 인터페이스를 지원하는 앱(문서 사용자 인터페이스를 통해 선택된 파일에 한해서만 임시적으로 접근 허용)을 통해서만 작동합니다. + 이 기능을 활성화하면 개인 및 직장 프로필에서 각각 상대 프로필의 파일에 접근하거나 상대 프로필 간 파일 작업을 할 수 있습니다. 이 기능은 파일 시스템 간 격리를 유지한 상태에서 문서 사용자 인터페이스(Documents UI, 보통 \"파일\" 또는 \"문서\"라는 이름을 가진 기본 파일 관리자 앱) 또는 이를 지원(문서 사용자 인터페이스를 통해 선택된 파일에 한해서만 임시적으로 접근 허용)하는 앱을 통해서만 작동합니다. 호환성 잠시만 기다려 주세요… 직장 프로필에 APK 설치하기 - 카메라 앱으로 위장한 이미지 탐색기 앱을 추가합니다. 다른 앱에서 이 위장 앱을 불러오면 문서 사용자 인터페이스 및 프로필 간 파일 공유 기능(활성화되어 있을 시)을 통해 선택된 이미지 파일을 카메라 촬영 화면으로 인식하게 합니다. 외부 카메라 앱을 통한 사진 촬영을 지원하는 앱, 이 중 문서 사용자 인터페이스를 기본 지원하지 않는 앱에 특히 유용합니다. 이 기능을 켜려면 사용 기록 액세스 권한을 필요로 합니다. \"확인\" 버튼을 누르신 후 양쪽 프로필 모두의 Shelter 앱에 대해 해당 권한을 허용해 주세요. 해당 권한이 허용되지 않은 경우 기능이 정상적으로 작동하지 않습니다. 프로필 간 파일 공유 기능을 켜려면 모든 파일에 액세스 권한을 필요로 합니다. \"확인\" 버튼을 누르신 후 개인 및 직장 양쪽 프로필 모두의 Shelter 앱에 대해 해당 권한을 허용해 주세요. 지금 직장 프로필 생성 및 Shelter의 설정 작업을 진행하고 있습니다. @@ -77,17 +74,17 @@ \n위 사항에 해당하지 않으며 설정 과정을 임의로 중단하지 않았다면, 큰 규모의 변형 또는 수정이 가해진 시스템 또는 Shelter와 다른 직장 프로필 관리 도구와의 충돌이 원인일 수 있으며 이 경우 정상적인 Shelter 설정 작업이 어렵습니다. \n \n\"다음\" 버튼을 누르시면 Shelter가 종료됩니다. - \"%s\" 앱에 그래픽 인터페이스가 존재하지 않아 실행할 수 없습니다. - 이곳을 눌러 Shelter 설정 작업을 마무리하세요 + %s 앱에 그래픽 인터페이스가 존재하지 않아 실행할 수 없습니다. + Shelter 설정 작업 마무리하기 설정 소스 코드 Shelter 서비스가 실행 중입니다. - 목록에서 숨겨진 앱을 수정할 경우 앱 오작동을 비롯한 예상치 못한 현상을 유발할 수 있습니다. 다만 오류가 있는 제조사 ROM으로 인해 모든 필수 시스템 앱이 직장 프로필에서 활성화되지 않았다면 이 기능이 유용할 수 있으며, 계속 진행하시는 경우 상기한 위험을 감수하는 것입니다. + 목록에서 숨겨진 앱을 수정할 경우 앱 오작동을 비롯한 예상치 못한 현상을 유발할 수 있습니다. 다만 오류가 있는 제조사 ROM으로 인해 모든 필수 시스템 앱이 직장 프로필에서 활성화되지 않았다면 이 기능이 유용할 수 있습니다. 계속 진행하시는 경우 상기된 위험을 감수하는 것입니다. 검색 이제 Shelter 설정 작업을 시작합니다. 본 기기가 Android 버전 7 이하를 실행 중이라면, 방해 금지 모드가 꺼진 상태인지 꼭 확인해 주세요. 이후 푸시 알림을 눌러야 설정 작업이 마무리되기 때문입니다. \n \n\"다음\" 버튼을 누르시면 설정 작업이 진행됩니다. - 이곳을 클릭하시면 Shelter의 설정 작업이 모두 마무리됩니다. + 이곳을 누르시면 Shelter의 설정 작업이 모두 마무리됩니다. 연락처 검색 차단 개인 프로필에서 직장 프로필 내에 저장된 연락처로의 접근을 막습니다. Shelter는 AOSP(Android Open Source Project), Google Android(Pixel 탑재 운영 체제) 및 대다수의 AOSP 기반 오픈 소스 커스텀 ROM(LineageOS 등)과 같이 AOSP를 기반으로 파생된 Android 시스템들에서 개발 및 테스트되었습니다. 본 기기가 상기된 Android 시스템 중 하나를 실행하고 있다면, 이는 Shelter가 본 기기에서 올바르게 동작할 가능성이 높다는 뜻입니다. 👏 @@ -111,8 +108,12 @@ [비활성] %s 화면 잠금이 실행되었을 때 포어그라운드에서 실행 중(화면에 표시 중)인 앱에 대하여 비활성화 처리를 하지 않습니다. 음악 플레이어 등의 앱을 사용하고 있을 때 유용한 기능이나, \"일괄 비활성화 바로 가기\"를 통하여 수동으로 비활성화해 주어야 합니다. Shelter를 실행하는 도중 직장 프로필을 비활성화하신 것 같습니다. 이미 직장 프로필을 활성화하셨을 경우 Shelter를 다시 실행해 주세요. - 권한이 거부되었거나 지원하지 않는 기기입니다 - 직장 프로필 구성에 실패했습니다. Shelter를 다시 실행 후 재시도해 주세요. + 권한이 거부되었거나 지원되지 않는 기기입니다 + 직장 프로필 구성에 실패했습니다. Shelter를 다시 실행한 후 재시도해 보세요. 활성화 후 실행하기 \"%s\" 앱이 활성화되었습니다 + 모의 결제 서비스 (사용금지) + 개인 프로필에 모의 NFC 결제 서비스를 추가하여 [설정] - [NFC]의 비접촉 결제 옵션을 활성화합니다. 개인 프로필에 설치된 결제 앱이 없을 경우 직장 프로필에 있는 앱의 비접촉 결제 서비스 사용이 불가능한 Android 상 버그를 우회하기 위한 기능입니다. + 프로필 간 상호 동작 허용 + 모의 결제 서비스 \ No newline at end of file diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index f2b80f2..7947cab 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -4,6 +4,8 @@ #009688 #FFC107 #004D3F + @color/colorTextPrimary + @color/colorAccent #EEEEEE #CCCCCC #004D3F diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index ef540fa..a0960f1 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -1,14 +1,13 @@ Tot ziens - Verdergaan - Shelter moet beheerder van dit apperaat worden om zijn isolatietaken uit te voeren. - Kies een beeldsbestand + Ga verder + Shelter moet beheerder van dit apparaat worden om zijn isolatietaken uit te voeren. Shelter belangrijk - Druk hier om het instellen van Shelter te beëindigen - Gefeliciteerd! Je bent een klik verwijderd om het instellen van Shelter te beëindigen. + Druk hier om het instellen van Shelter te voltooien + Gefeliciteerd! Je bent een klik verwijderd om het instellen van Shelter te voltooien. App isolatiedienst - Shelter Dienst + Shelter Service Shelter is nu actief … Bevries automatisch Widgets toestaan in Hoofdprofiel @@ -28,28 +27,28 @@ \nAls je en ontwikkerlaar bent en graag Shelter wilt laten werken op deze onverenigbare ROMs zoals MIUI, pull requests zijn altijd welkom. De ontwikkelaar neemt ABSOLUUT GEEN VERANTWOORDELIJKHEID op als je je apperaat met een onverenigbare ROM breekt. \n \nJe zal een melding moeten krijgen om je instelling af te ronden, zorg er alsjeblieft voor dat je apperaat NIET op Niet Storen staat. - Shelter is ontwikkeld en getest op AOSP-achtige Android afgeleiden. Dit omvat AOSP (Android Open Source Project), Google Android (op Pixels), en de meeste op AOSP gebaseerde open-source custom ROMs zoals LineageOS. Als je telefoon draait op een van de Android afgeleiden hierboven vermeld, dan gefeliciteerd! Shelter zal waarschijnlijk correct werken op je telefoon. + Shelter is ontwikkeld en getest op AOSP-achtige Android-afgeleiden. Dit omvat AOSP (Android Open Source Project), Google Android (op Pixels), en de meeste op AOSP gebaseerde open-source custom ROM\'s zoals LineageOS. Als je telefoon draait op één van de Android afgeleiden hierboven vermeld: gefeliciteerd! Shelter zal waarschijnlijk goed werken op je telefoon. \n -\nSommige leveranciers van toestellen voegen zeer ingrijpende aanpassingen aan de Android code base toe, wat resulteert in conflicten, incompatibiliteit en onverwacht gedrag. Sommige aangepaste ROM\'s kunnen ook compatibiliteits-brekende veranderingen toevoegen, maar over het algemeen zijn dit zeldzamere voorvallen in vergelijking met door de telefoonleverancier toegevoegde incompatibiliteiten. +\nSommige leveranciers van toestellen voegen zeer ingrijpende aanpassingen aan de Android grondslag code toe, met conflicten, incompatibiliteit en onverwacht gedrag als gevolg. Sommige aangepaste ROM\'s kunnen ook veranderingen toevoegen die de compatibiliteit vernietigen, maar over het algemeen zijn dit zeldzame voorvallen in vergelijking met door de telefoonleverancier toegevoegde incompatibiliteiten. \n -\nShelter is slechts een interface naar de functie Werkprofiel die door het systeem wordt geleverd. Als de functie die door het systeem wordt geleverd kapot of niet standaard is, kan Shelter het probleem niet op magische wijze zelf oplossen. Als je momenteel een door de leverancier aangepaste Android-versie gebruikt waarvan bekend is dat deze werkprofielen verbreekt, dan ben je gewaarschuwd. Je kunt toch doorgaan, maar er is geen garantie dat Shelter zich onder deze omstandigheden correct zou gedragen. +\nShelter is slechts een interface naar de functie Werkprofiel die door het systeem wordt geleverd. Als het Werkprofiel dat door het systeem wordt geleverd kapot of niet standaard is, kan Shelter het probleem niet op magische wijze zelf oplossen. Als je momenteel een Android-versie gebruikt die door de leverancier is aangepast, waarvan bekend is dat deze werkprofielen stuk maakt, dan ben je gewaarschuwd. Je kunt toch doorgaan, maar er is geen garantie dat Shelter zich onder deze omstandigheden correct zou gedragen. Shelter zal automatisch apps invriezen die zijn gestart vanuit \"Ontdooien & Start\" bij de volgende schermvergrendelingsgebeurtenis. Snelkoppeling voor ontdooien en/of starten maken Ontdooien en starten Welkom bij Shelter - Shelter is een applicatie om je te helpen andere applicaties te draaien in een geïsoleerd profiel. Het doet dit door gebruik te maken van de Werkprofiel functie van Android. + Shelter is een applicatie om je te helpen andere applicaties te draaien in een geïsoleerd profiel. Het doet dit door gebruik te maken van de functie Werkprofiel van Android. \n \nKlik op \"Volgende\", en we zullen je meer informatie geven over Shelter en je door het installatieproces leiden. \n \nWe raden u aan alle volgende pagina\'s zorgvuldig door te lezen. - Een woord over rechten - Shelter zal standaard niet om individuele rechten vragen. Echter, zodra je verder gaat met het installatieproces, zal Shelter proberen een Werkprofiel op te zetten en daarmee de profielmanager van dat profiel worden. + Even dit over rechten + Shelter zal standaard niet om individuele toegangsrechten vragen. Echter, zodra je verder gaat met het installatieproces, zal Shelter proberen een Werkprofiel op te zetten en daarmee de profielmanager van dat profiel worden. \n -\nDit geeft Shelter een uitgebreide lijst van rechten binnen het profiel, vergelijkbaar met die van een apparaatbeheerder, maar gewoon beperkt tot het profiel. Profielbeheerder zijn is noodzakelijk voor de meeste functies van Shelter. +\nDit geeft Shelter een uitgebreide lijst van toegangsrechten binnen het profiel, vergelijkbaar met die van een apparaatbeheerder, maar dan beperkt tot het profiel. Profielbeheerder zijn is noodzakelijk voor de meeste functies van Shelter. \n -\nSommige geavanceerde functies van Shelter kunnen meer rechten buiten het werkprofiel vereisen. Indien nodig, zal Shelter apart om die rechten vragen wanneer u de betreffende functies inschakelt. +\nSommige geavanceerde functies van Shelter kunnen meer toegangsrechten buiten het werkprofiel vereisen. Indien nodig, zal Shelter apart om die rechten vragen wanneer u de betreffende functies inschakelt. Compatibiliteit - Klaar\? + Klaar? We zijn nu klaar om Shelter voor je in te stellen. Zorg er eerst voor dat jouw toestel niet in Niet Storen modus staat, omdat je later op een melding moet klikken om het installatieproces af te ronden. \n \nAls je klaar bent, klik op \"Volgende\" om het installatieproces te beginnen. @@ -58,13 +57,13 @@ Setup mislukt Tot onze spijt moeten wij u meedelen dat wij niet in staat waren Shelter voor je in te stellen. \n -\nAls je de setup niet handmatig heeft geannuleerd, dan is de reden voor het mislukken meestal te wijten aan een sterk gewijzigd systeem of een conflict tussen Shelter en andere werkprofiel-managers. Helaas is hier niet veel aan te doen. +\nAls u de setup niet handmatig heeft geannuleerd, dan is de reden voor het mislukken meestal te wijten aan een sterk gewijzigd systeem of een conflict tussen Shelter en andere werkprofiel-managers. Helaas is hier niet veel aan te doen. \n \nKlik op Volgende om af te sluiten. Actie vereist Je zou nu een melding van Shelter moeten zien. Klik op die melding om het installatieproces te voltooien. \n -\nAls je de melding niet ziet, controleer dan of je toestel niet in de Niet storen modus staat en probeer het meldingencentrum naar beneden te trekken. +\nAls je de melding niet ziet, controleer dan of je toestel niet in de Niet storen modus staat en probeer het meldingencentrum naar beneden te halen. \n \nOm Shelter te resetten en opnieuw te beginnen, kun je de gegevens van Shelter wissen in Instellingen. Nu bevriezen @@ -79,4 +78,10 @@ Bevriezen Ontdooien Starten + Interactie + Blokkeer contacten zoeken + Diensten + Auto-bevriezen in afwachting + Intellingen + Verbied de toegang van het hoofdprofiel tot contacten in het werkprofiel. \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 2b1c30e..90a16c2 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -4,7 +4,6 @@ Kontynuuj Usługa izolowania aplikacji Shelter musi zostać administratorem urządzenia, aby wykonywać zadania związane z izolacją. - Wybierz plik obrazka Kliknij tu, aby zakończyć konfigurację Shelter Gratulacje! Jesteś jedno kliknięcie od skończenia konfiguracji Shelter. Usługa Shelter @@ -46,8 +45,6 @@ Ustawienia Interakcja Mostek plików - Wybierz obraz jako fałszywą kamerę - Przedstaw aplikację fałszywej kamery innym aplikacjom, pozwalając Ci wybrać obrazek z Documents UI (i mostka plików jeśli włączony) jako zrobione zdjęcie. To umożliwia korzystanie z mostka plików dla wszystkich aplikacji, aby te mogły korzystać z innych aplikacji aparatu, nawet jeśli nie wspierają Documents UI natywnie. Zablokuj wyszukiwanie kontaktów Zablokuj dostęp z profilu głównego do kontaktów w profilu służbowym. Usługi @@ -123,5 +120,5 @@ \nJeśli nie widzisz powiadomienia upewnij się, że nie masz włączonego trybu Nie Przeszkadzać lub spróbuj rozwinąć centrum powiadomień. \n \nBy zresetować Sheltera i zacząć od nowa możesz wyczyścić dane Sheltera w Ustawieniach. - Gotowy/a\? + Gotowy/a? \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index aa773cc..b8553dd 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -13,7 +13,6 @@ Continuar Serviço de isolamento Shelter precisa tornar-se o Administrador do seu dispositivo para poder executar as tarefas de isolamento. - Escolha um arquivo de imagem Importante (Shelter) Clique aqui para concluir a configuração do Shelter Parabéns! Você está a um clique para concluir a configuração do Shelter. @@ -48,8 +47,6 @@ Configurações Transferência de arquivos Quando ativado, você será capaz de explorar / ver / escolher e copiar os arquivos de Perfil principal no Shelter e vice-versa, SOMENTE via a interface de Documentos (Arquivos ou Documentos em seu lançador) ou apps com suporte à Interface de Documentos (recebem acesso temporário aos arquivos que você escolher via interface de Documentos), enquanto ainda pertencendo ao isolamento do sistema de arquivos. - Seletor de imagens via simulador de câmera - Lançar um app que simula a câmera para outros apps, permitindo que você selecione uma imagem da sua escolha da Interface de Documentos (e da Transferência de arquivos, se ativado) como se fosse a foto feita. Isto permite que a Transferência de arquivos funcione com qualquer app que tem suporte a invocação de apps de câmera para tirar uma foto, mesmo sem suporte nativo a interface de Documentos. Serviços Serviço de Auto-Suspensão Quando a tela for bloqueada, suspende automaticamente os apps executados de \"Atalho de Reativar e Iniciar\". @@ -91,7 +88,7 @@ Bem-vindo ao Shelter Detalhes sobre as permissões Compatibilidade - Vamos configurar o Shelter para você. Se o seu dispositivo estiver rodando Android 7 ou inferior, por favor, certifique-se primeiro de que seu dispositivo não esteja no modo \"Não Perturbe\", porque mais tarde você precisará clicar em uma notificação para finalizar o processo de configuração. + Vamos configurar o Shelter para você. Se o seu dispositivo estiver rodando Android 7 ou superior, por favor, certifique-se primeiro de que seu dispositivo não esteja no modo \"Não Perturbe\", porque mais tarde você precisará clicar em uma notificação para finalizar o processo de configuração. \n \nQuando estiver pronto, clique em \"Próximo\" para iniciar o processo de configuração. Por favor, aguarde… @@ -104,7 +101,7 @@ \n \nClique no \"Próximo\" para sair. Ação necessária - Pronto\? + Pronto? Estamos tentando criar o Perfil de Trabalho e configurar o Shelter no seu dispositivo. O Shelter é um app que ajuda a executar outros apps em um perfil isolado. Para isto ele usa o recurso de Perfil de Trabalho no Android. \n diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index f2ab657..2580b95 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -30,8 +30,7 @@ \n \nVa trebui să primiți o notificare pentru a finaliza configurarea, vă rugăm să vă asigurați că dispozitivul dvs. NU este în modul Nu deranjați. Creați o comandă rapidă de Inghetare Grup(lot) - Alegeți un fișier de imagine - Shelter Important + Important Click aici pentru a finaliza configurarea Shelter Serviciul Shelter Shelter ruleaza acum … @@ -52,8 +51,7 @@ Instalați APK în Shelter Setări Interacţiune - File Shuttle - Activeaza Camera Falsa + Tranzit de fișiere Shelter trebuie să devină Administrator de Dispozitiv pentru a-și îndeplini sarcinile de izolare. Shelter Clonați la Profilul Principal @@ -65,7 +63,6 @@ Deschideți Interfața de Utilizare a Documentelor Se pare că ați dezactivat Profilul de Lucru în timp ce porniți Shelter. Dacă l-ați activat acum, porniți din nou Shelter. Shelter are nevoie de acces la Toate fișierele pentru File Shuttle. Vă rugăm să activați permisiunea pentru AMBELE (Principal/ Lucru) aplicații Shelter afișate în caseta de dialog după ce apăsați „Ok”. - Prezentați o aplicație de cameră falsă altor aplicații, permițându-vă să alegeți o imagine arbitrară din interfața de utilizare a documentelor (și File Shuttle dacă este activată) ca fotografie făcută. Aceasta permite File Shuttle pentru orice aplicație care acceptă invocarea altor aplicații de cameră pentru a face o fotografie, chiar dacă acestea nu acceptă Documente UI în mod nativ. Blocați Căutarea Contactelor Servicii Aplicația \"%s\" a fost dezinstalată cu succes @@ -88,4 +85,42 @@ Felicitări! Sunteți la un click distanță de finalizarea configurării Shelter. Operatiune in grup(lot) Creați Dezgheata și/sau Pornire comandă rapidă + În mod implicit, Shelter nu va cere nicio permisiune individuală. Cu toate acestea, odată ce continuați cu procesul de configurare, Shelter va încerca să configureze un profil de lucru și, prin urmare, va deveni managerul de profil al profilului respectiv. +\n +\nAcest lucru va oferi Shelter o listă extinsă de permisiuni în interiorul profilului, comparabilă cu cea a unui administrator de dispozitiv, deși limitată la profil. A fi manager de profil este necesar pentru majoritatea funcționalității Shelter. +\n +\nUnele funcții avansate ale Shelter pot necesita mai multe permisiuni în afara Profilului de serviciu. Când este necesar, Shelter va cere aceste permisiuni separat atunci când activați funcțiile corespunzătoare. + Bun venit la Shelter + Un cuvânt despre permisiuni + Compatibilitate + Shelter este o aplicație care vă ajută să rulați alte aplicații într-un profil izolat. Face acest lucru utilizând funcția Profil de serviciu din Android. +\n +\nFaceți clic pe „Următorul” și vă vom oferi mai multe informații despre Shelter și vă vom ghida prin procesul de configurare. +\n +\nVă sugerăm să citiți cu atenție toate paginile următoare. + Pregatit? + Shelter este dezvoltat și testat pe derivate Android asemănătoare AOSP. Aceasta include AOSP (Android Open Source Project), Google Android (pe Pixels) și majoritatea ROM-urilor personalizate open source bazate pe AOSP, cum ar fi LineageOS. Dacă telefonul dvs. rulează unul dintre derivatele Android enumerate mai sus, atunci felicitări! Adăpostul va funcționa probabil corect pe dispozitivul dvs. +\n +\nUnii furnizori de dispozitive introduc personalizări foarte invazive în baza de coduri Android, ducând la conflicte, incompatibilități și comportament neașteptat. Unele ROM-uri personalizate pot introduce, de asemenea, modificări care distrug compatibilitatea, dar, în general, acestea sunt apariții mai rare în comparație cu incompatibilitățile introduse de furnizorul de telefoane. +\n +\nShelter este doar o interfață în caracteristica Profil de lucru oferită de sistem. Dacă funcția furnizată de sistem este defectă sau nu este standard, Shelter nu ar putea rezolva problema în mod magic. Dacă utilizați în prezent o versiune Android modificată de furnizor despre care se știe că încalcă Profilurile de lucru, ai fost avertizat. Puteți continua oricum, dar nu există nicio garanție că Shelter se va comporta corect în aceste circumstanțe. + Configurarea a eșuat + Actiune necesară + Acum ar trebui să vedeți o notificare de la Shelter. Faceți clic pe notificarea respectivă pentru a finaliza procesul de configurare. +\n +\nDacă nu vedeți notificarea, asigurați-vă că dispozitivul nu este în modul Nu deranjați și încercați să trageți în jos centrul de notificări. +\n +\nPentru a reseta Shelter și a începe de la capăt, puteți șterge datele Shelter din Setări. + Acum suntem gata să configuram Shelter pentru tine. Dacă dispozitivul dvs. rulează Android 7 sau o versiune anterioară, asigurați-vă mai întâi că dispozitivul dvs. nu este în modul Nu deranja, deoarece va trebui să dați clic pe o notificare mai târziu pentru a finaliza procesul de configurare. +\n +\nCând sunteți gata, faceți clic pe „Următorul” pentru a începe procesul de configurare. + Vă rugăm așteptați… + Încercăm să inițializam Profilul de lucru și să setăm Shelter pe dispozitivul dvs. + Ne pare rău să vă informăm că nu am putut configura Shelter pentru dvs. +\n +\nDacă dispozitivul dvs. avea deja un Profil de serviciu, fie dintr-o instalare anterioară a Shelter, fie dintr-o altă aplicație, va trebui să eliminați acel profil din Setări -> Cont înainte ca Shelter să poată continua. +\n +\nÎn caz contrar, dacă nu ați anulat manual configurarea, atunci motivul eșecului este cel mai frecvent din cauza unui sistem puternic modificat sau a unui conflict între Shelter și alți manageri de profil de lucru. Din păcate, nu am putea face mare lucru în acest sens. +\n +\nFaceți clic pe „Next” pentru a ieși. \ No newline at end of file diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index d3f2916..c63a5b0 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -9,7 +9,7 @@ \nЕсли вы являетесь разработчиком и хотели бы сделать так, чтобы Shelter работал на этих сломаных прошивках, таких как MIUI, - пулл реквесты в Git с удовольствием принимаются. Разработчик приложения не несет АБСОЛЮТНО НИКАКОЙ ОТВЕТСТВЕННОСТИ если вы сломаете ваше устройство с несовместимой прошивкой. \n \nВам нужно будет кликнуть на оповещение для успешного завершения установки, убедитесь, что устройство находится НЕ в режиме \"Не беспокоить\". - Выход + Выйти Продолжить Служба изоляции приложений Shelter требуется стать администратором устройства, чтобы управлять изоляцией. @@ -17,18 +17,18 @@ Shelter запущен … Основной Shelter - [Замороженно] %s - Клонировать в Shelter (рабочий профиль) - Клонировать в основной профиль + [Заморожено] %s + Клонировать в Shelter + Клонировать в осн. профиль Удалить Заморозить Разморозить Запустить - Создать ярлык для разморозки и/или запуска + Ярлык разморозки и запуска Разморозить и запустить Автозаморозка Групповая заморозка - Создать ярлык групповой заморозки + Ярлык групповой заморозки Заморозить Настройки О программе @@ -52,18 +52,17 @@ Операции для %s Все приложения в списке автозаморозки были успешно заморожены. Ярлык создан в вашем лаунчере. - Клонирование несистемных приложений в другой профиль невозможно на MIUI в данный момент. Пожалуйста, клонируйте магазин приложений вашей системы (например, Play Store) в ваш другой профиль и установите приложения оттуда. + Клонирование несистемных приложений в другой профиль в данный момент невозможно на MIUI. Пожалуйста, клонируйте магазин приложений вашей системы (например, Play Маркет) в ваш другой профиль и установите приложения оттуда. Нажмите, чтобы завершить настройку Shelter Установка... - Разрешить виджеты в основном профиле + Виджеты в осн. профиле Поиск Ожидание автозаморозки Заморозить Выбрать несколько - Показать все приложения + Все приложения Перенос файлов - Выбор изображения вместо доступа к камере - Открыть просмотр файлов + Открыть проводник Взаимодействие Служба автозаморозки При блокировке экрана автоматически замораживать приложения, запущенные с помощью ярлыка \"Разморозить и запустить\". @@ -71,42 +70,42 @@ Shelter необходим доступ ко всем файлам для переноса файлов. Пожалуйста, дайте разрешение приложениям Shelter в ОБОИХ профилях (основном и рабочем) в диалогах, которые появятся после того, как вы нажмёте \"OK\". Службы Всё равно продолжить - Выберите файл с изображением Shelter: важное Поздравляем! Вы в одном шаге от завершения настройки Shelter. Установить APK в Shelter Приложение установлено в рабочий профиль. - Запретить отслеживание контактов + Не отслеживать контакты Перевод - Запретить получать доступ к контактам в рабочем профиле из основного профиля. - Когда включено, вы сможете искать / просматривать / выбирать / копировать файлы в Shelter из рабочего профиля и обратно ТОЛЬКО через системную функцию просмотра файлов (системное приложение, которое называется \"Файлы\" или \"Документы\" на вашем устройстве) или приложения, которые используют системную функцию просмотра файлов (таким образом возможно получить лишь временный доступ к файлам), при этом разделение файловой системы остаётся нетронутым. - Имитировать функцию камеры для других приложений, что даст вам возможность выбирать сохранённое изображение через функцию просмотра файлов (или перенос файлов, если он активирован) в качестве сделанного снимка. Эта функция позволяет перенести файлы любому установленному приложению, которое вызывает приложение камеры для того, чтобы сделать и получить фотографию, даже если оно не использует просмотр файлов напрямую. - Управление приложениями, не отображаемыми в списке, может привести к сбоям и различным непредсказуемым последствиям. Однако, эта возможность может быть полезна в случае, если производитель вашего устройства не разрешает всем системным приложениям быть использованными в рабочем профиле по умолчанию. Пожалуйста, подумайте, хотите ли вы продолжить. + Запретить получение доступа к контактам рабочего профиля из основного профиля. + Если включено, вы сможете искать/просматривать/выбирать/копировать файлы в Shelter из рабочего профиля и обратно ТОЛЬКО через системный менеджер файлов (он называется \"Файлы\" или \"Документы\" на вашем устройстве) или через приложения, поддерживающие Documents UI (с помощью них возможно получить лишь временный доступ к файлам), при этом изоляция файловой системы останется нетронутой. + Управление скрытыми в списке приложениями может привести к разного рода нестабильностям и сбоям, однако эта функция может оказаться полезной в случаях, когда в некачественно настроенных производителем прошивках не включены все необходимые системные приложения в рабочем профиле по умолчанию. Продолжайте на свой страх и риск. Пропускать активные приложения - НЕ замораживать активные приложение (с видимой активностью) при блокировке экрана. Это может быть полезно для приложений типа аудиопроигрывателя, но потом вам нужно будет их отдельно замораживать через ярлык \"Групповая заморозка\". + Не замораживать приложение на переднем плане при блокировке экрана. Это может быть полезно для приложений типа аудиопроигрывателя, но вам придётся вручную замораживать их через ярлык \"Групповая заморозка\". Shelter необходимо разрешение на отображение поверх других приложений для того, чтобы функция переноса файлов работала корректно. Пожалуйста, дайте разрешение приложениям Shelter в ОБОИХ профилях (основном и рабочем) в диалогах, которые появятся после того, как вы нажмёте \"OK\". Это разрешение необходимо для того, чтобы перенос файлов мог работать в фоновом режиме. Для этого Shelter необходим доступ к истории использования приложений. Пожалуйста, дайте разрешение приложениям Shelter в ОБОИХ профилях (основном и рабочем) в диалогах, которые появятся после того, как вы нажмёте \"OK\". В противном случае эта возможность не будет работать правильно. - Невозможно запустить приложение %s, потому что оно не имеет графического интерфейса. + Невозможно запустить приложение %s, так как оно не имеет графического интерфейса. Shelter автоматически заморозит приложения, запущенные с помощью \"Разморозить и запустить\" при следующей блокировке экрана. Добро пожаловать в Shelter Пару слов о разрешениях Совместимость Установка не выполнена Требуется действие - Готовы\? + Готовы? Подождите… Выполняется инициализация рабочего профиля и настройка Shelter на вашем устройстве. - Приготовления к установке Shelter выполнены. Убедитесь, что ваше устройство не в режиме \"Не беспокоить\", потому что вам нужно будет позже нажать на уведомление, чтобы завершить процесс настройки. + Приготовления к установке Shelter выполнены. Если ваше устройство работает на Android 7 и ниже, пожалуйста, убедитесь, что оно не в режиме \"Не беспокоить\". Вам позже потребуется нажать на уведомление для завершения процесса настройки. \n -\nКогда будете готовы, нажмите \"Далее\", чтобы начать процесс настройки. +\nНажмите \"Далее\", чтобы начать процесс настройки. Shelter – это приложение, которое поможет вам запускать другие приложения в изолированном профиле. Для этого используется функция Android Рабочий профиль. \n \nНажмите \"Далее\", чтобы узнать дополнительную информацию о Shelter и выполнить установку. \n \nМы рекомендуем вам внимательно прочитать все следующие страницы. - К сожалению, установить Shelter оказалось невозможно. + К сожалению, установить Shelter невозможно. \n -\nЕсли вы сами не отменили установку, то причина сбоя чаще всего связана с сильно изменённой системой или конфликтом между Shelter и другими менеджерами рабочих профилей. Со своей стороны мы мало что можем с этим поделать. +\nЕсли на вашем устройстве уже был рабочий профиль от предыдущей установки Shelter или от другого приложения, вам придётся удалить этот профиль через «Настройки → Учётная запись», прежде чем Shelter сможет начать работу. +\n +\nИли же, если вы сами не отменили установку, то причина сбоя чаще всего кроется в сильно модифицированной системе или конфликтом между Shelter и другими менеджерами рабочих профилей. К сожалению, мы мало что можем с этим поделать. \n \nНажмите \"Далее\", чтобы выйти. Сейчас вы должны увидеть уведомление от Shelter. Нажмите на это уведомление, чтобы завершить процесс установки. @@ -124,4 +123,8 @@ \nНекоторые производители устройств вносят очень серьёзные изменения в кодовую базу Android, что приводит к конфликтам, несовместимости и неожиданному поведению. В некоторые пользовательские ROM также могут вноситься изменения, нарушающие совместимость, но, как правило, это более редкие случаи по сравнению с несовместимостью, вносимой производителем устройства. \n \nShelter – это всего лишь интерфейс к функции рабочего профиля, предоставляемой системой. Если функция, предоставляемая системой, не работает или реализована нестандартно, Shelter не сможет волшебным образом решить проблему самостоятельно. Если вы используете модифицированную производителем версию Android, про которую известно, что в ней нарушены рабочие профили, вас предупредили. Вы можете продолжить установку в любом случае, но нет никакой гарантии, что Shelter будет работать правильно в этих обстоятельствах. + Заглушка платёжных сервисов (НЕ ИСПОЛЬЗОВАТЬ) + Разрешить работу между профилями + Чтобы получить возможность выбрать платёжное приложение внутри рабочего профиля в Настройки - NFC, включите фальшивый платёжный сервис NFC в основном профиле. Это временное решение ошибки Android, из-за которой невозможно выбрать платёжное приложение внутри рабочего профиля, если в основном профиле таких нет. + Заглушка платёжных сервисов \ No newline at end of file diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml new file mode 100644 index 0000000..d0ec32b --- /dev/null +++ b/app/src/main/res/values-sr/strings.xml @@ -0,0 +1,119 @@ + + + Апликација\"%s\" је успешно деинсталирана + Није могуће клонирати системске апликације на профил над којим Шелтер нема контролу. + Није могуће додати пречице у покретач. За више информација контактирајте програмера. + Шелтеру је потребан приступ свим датотекама за Фајл шатл. Омогућите дозволу за ОБЕ (личне/радне) апликације за Шелтер које се приказују у дијалогу након што притиснете „ОК“. + Шелтеру је потребна дозвола за статистику коришћења да ово уради. Омогућите дозволу за ОБЕ апликације за Шелтер које се приказују у дијалогу након што притиснете „Ок“. Ако то не урадите, ова функција неће исправно радити. + Шелтер мора да се приказује преко других апликација да би Фајл шатл функционисао исправно. Омогућите дозволу за ОБЕ (личне/радне) апликације за Шелтер које се приказују у дијалогу након што притиснете „ОК“. Ова дозвола се користи за покретање Фајл шатл услуга у позадини. + Шелтер је развијен и тестиран на Андроид дериватима сличним АОСП-у. Ово укључује АОСП (Андроид Опен Сорс Проџект), Гугл Андроид (на Пикселу) и већину прилагођених РОМ-ова отвореног кода заснованих на АОСП-у као што је ЛиниеџОС. Ако Ваш телефон користи један од Андроид деривата наведених изнад, честитамо! Шелтер ће вероватно исправно радити на Вашем уређају. +\n +\nНеки произвођачи уређаја користе веома инвазивна прилагођавања базе Андроид кода, што доводи до сукоба, некомпатибилности и неочекиваног понашања. Неки прилагођени РОМ-ови такође могу да унесу промене које нарушавају компатибилност, али генерално то су ређе појаве у поређењу са некомпатибилностима које је увео произвођач телефона. +\n +\nШелтер је само интерфејс за функцију радног профила коју обезбеђује систем. Ако је функција коју пружа систем покварена или нестандардна, Шелтер не може сам да реши проблем. Ако тренутно користите верзију Андроид-а модификовану од стране добављача за коју је познато да крши радне профиле, добили сте упозорење. У сваком случају можете наставити, али не постоји гаранција да ће се Шелтер исправно понашати у овим околностима. + Лажна услуга за плаћање (НЕ КОРИСТИТЕ) + Здраво + Настави + Услуга изолације апликација + Добродошли у Шелтер + Шелтер је апликација која Вам помаже да покренете друге апликације у изолованом профилу. То ради коришћењем функције Радни профил Андроида. +\n +\nКликните „Даље“ и пружићемо Вам више информација о Шелтеру и водити Вас кроз процес подешавања. +\n +\nПредлажемо да пажљиво прочитате све следеће странице. + Неколико речи о дозволама + Компатибилност + Сада смо спремни да Вам подесимо Шелтер. Ако Ваш уређај користи Андроид 7 или старију верзију, прво се уверите да Ваш уређај није у режиму Не узнемиравај, јер ћете морати да кликнете на обавештење касније да бисте завршили процес подешавања. +\n +\nКада будете спремни, кликните „Даље“ да бисте започели процес подешавања. + Сада би требало да видите обавештење од Шелтера. Кликните на то обавештење да бисте завршили процес подешавања. +\n +\nАко не видите обавештење, уверите се да Ваш уређај није у режиму Не узнемиравај и покушајте да повучете центар за обавештења надоле. +\n +\nДа бисте ресетовали Шелтер и почели испочетка, можете да обришете податке Шелтера у подешавањима. + Није могуће деинсталирати системске апликације на профилу над којим Шелтер нема контролу. + Спремни? + Сачекајте… + Подешавање није успело + Потребна радња + Честитамо! На један клик сте од завршетка подешавања Шелтера. + Шелтер услуга + Шелтер сада ради … + Замрзни сада + Инсталирање... + Главни + Шелтер + [Замрзнуто] %s + Групна операција + Клонирај у Шелтер (радни профил) + Клонирај у главни профил + Деинсталирај + Замрзни + Одмрзни + Покрени + Одмрзни и покрени + Дозволи виџете у главном профилу + Дозволи међупрофилну интеракцију + Претрага + Направи пречицу за групно замрзавање + Замрзни + Инсталирај АПК у Шелтер + Отворите УИ докумената + Лажна услуга за плаћање + Подешавања + Интеракција + Блокирајте претрагу контаката + Забрани приступ са главног профила контактима унутар радног профила. + Када је екран закључан, аутоматски замрзни апликације покренуте са „Одмрзни и покрени пречица“. + Услуге + Услуга аутоматског замрзавања + Одгађање аутоматског замрзавања + Прескочи апликације у првом плану + НЕМОЈТЕ да замрзавате апликације у првом плану (са видљивом активношћу) када закључате екран. Ово може бити корисно за апликације као што су музички плејери, али ћете након тога морати ручно да их замрзнете преко „Пречица за групно замрзавање“. + О апликацији + Верзија + Изворни код + Превод + Пријава грешке / Праћење проблема + Подешавање Шелтера је завршено. Сада поново покрећемо Шелтер. Ако се Шелтер није покренуо аутоматски, можете га поново покренути из покретача. + Дозвола је одбијена или уређај није подржан + Радни профил није пронађен. Поново покрените апликацију да бисте поново обезбедили профил. + Није могуће обезбеђивање радног профила. Можете покушати поново тако што ћете поново покренути Шелтер. + Изгледа да сте онемогућили радни режим док сте покретали Шелтер. Ако сте га сада омогућили, покрените Шелтер поново. + Апликација \"%s\" је успешно клонирана + Апликација \"%s\" је успешно замрзнута + Апликација \"%s\" је успешно одмрзнута + Операције за %s + Све апликације на листи „Аутоматско замрзавање“ су успешно замрзнуте. + Пречица направљена на вашем покретачу. + Шелтер важно + Није могуће покренути апликацију %s јер нема ГУИ. + Свеједно настави + Клонирање несистемских апликација на други профил тренутно није могуће на МИУИ. Клонирајте продавницу апликација Вашег система (нпр. Плеј Стор) у други профил и затим инсталирајте апликације одатле. + Шелтер мора да постане администратор уређаја да би обављао своје изолационе задатке. + Кликните овде да завршите подешавање Шелтера + Аутоматско замрзавање је на чекању + Шелтер ће аутоматски замрзнути апликације покренуте из „Одмрзни и покрени“ приликом следећег закључавања екрана. + Направите пречицу за одмрзавање и/или покретање + Аутоматско замрзавање + Групно замрзавање + Инсталација апликације је завршена у радном профилу. + Прикажи све апликације + Манипулисање апликацијама које су скривене са листе може да изазове грешке и разне врсте неочекиваног понашања. Међутим, ова функција може бити корисна када неисправни РОМ-ови добављача не омогућавају све неопходне системске апликације у радном профилу подразумевано. Настављате на своју одговорност. + Фајл шатл + Покушавамо да иницијализујемо радни профил и подесимо Шелтер на Вашем уређају. + Са жаљењем Вас обавештавамо да нисмо били у могућности да Вам подесимо Шелтер. +\n +\nАко је Ваш уређај већ имао радни профил, било из претходне инсталације Шелтера или из друге апликације, мораћете да уклоните тај профил у Подешавања -> Налог пре него што Шелтер може да настави. +\n +\nУ супротном, ако нисте ручно отказали подешавање, разлог за неуспех је најчешће због јако модификованог система или сукоба између Шелтера и других менаџера радног профила. Нажалост, не можемо много да урадимо по том питању. +\n +\nКликните „Даље“ да бисте изашли. + Подразумевано, Шелтер неће тражити никакве појединачне дозволе. Међутим, када наставите са процесом подешавања, Шелтер ће покушати да подеси радни профил и тако постати менаџер наведеног профила. +\n +\nОво ће Шелтеру дати опсежну листу дозвола унутар профила, упоредиву са оном администратора уређаја, иако ограничена на профил. Бити менаџер профила је неопходно за већину функционалности Шелтера. +\n +\nНеке напредне функције Шелтера ће можда захтевати више дозвола ван радног профила. Када је потребно, Шелтер ће тражити те дозволе засебно када омогућите одговарајуће функције. + Када је омогућено, моћи ћете да разгледате / прегледате / бирате / копирате датотеке у Шелтеру са главног профила и обрнуто, САМО преко УИ докумената (названих Датотеке или Документи на вашем покретачу) или апликација са подршком УИ докумената (оне добијају само привремени приступ датотекама које одаберете у УИ докумената), док се даље одржава изолација система датотека. + Омогућите лажну НФЦ услугу плаћања у главном профилу, тако да опција бесконтактног плаћања у оквиру Подешавања - НФЦ постане омогућена да Вам дозволи да изаберете апликацију за плаћање унутар радног профила. Ово функционише око Андроид грешке која онемогућава одабир апликације за плаћање унутар радног профила ако ниједна није доступна у главном профилу. + \ No newline at end of file diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 633dfe4..bf4fb2b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -22,7 +22,6 @@ Alla appar i listan \"Automatisk frysning\" har frysts. Det går inte att lägga till genvägar till din launcher. Kontakta utvecklaren för mer information. Genväg skapad på din launcher. - Välj en bildfil Det går inte att starta appen %s eftersom den har inte något GUI. Att klona icke-systemappar till en annan profil är för närvarande inte möjligt på MIUI. Vänligen klona ditt systems appbutik (t.ex. Play Butik, FDroid) till den andra profilen och installera sedan appar därifrån. Primär @@ -61,13 +60,11 @@ Inställningar Interaktion File Shuttle - Bildväljare som falsk kamera Översätt Vi är nu redo att sätta upp Shelter åt dig. Se först till att din enhet inte är i \"Stör ej\"-läge, eftersom du kommer att behövaklicka på en avisering senare för att slutföra installationsprocessen. \n \nNär du är redo, klicka på \"Nästa\" för att påbörja installationsprocessen. Kompatibilitet - Presentera en falsk kameraapp för andra appar, så att du kan välja en bild från Documents UI (och File Shuttle om den är aktiverad) som den tagna bilden. Detta aktiverar File Shuttle för alla appar som har stöd för att starta andra kameraappar för att ta en bild, även om de inte har stöd för Documents UI. Tjänster Buggrapport / Problemspårare Behörighet nekas eller enhet som inte stöds @@ -78,7 +75,7 @@ Det går inte att tillhandahålla arbetsprofil. Du kan försöka igen genom att starta om Shelter. Det verkar som att arbetsprofilen var inaktiverad när Shelter startades. Om du nu har aktiverat det, starta om Shelter. Det går inte att klona systemappar till en profil som Shelter inte har kontroll över. - Redo\? + Redo? Vänta… Vi försöker initiera Work Profile och konfigurera Shelter på din enhet. Konfigurationen misslyckades diff --git a/app/src/main/res/values-te/strings.xml b/app/src/main/res/values-te/strings.xml new file mode 100644 index 0000000..d04230e --- /dev/null +++ b/app/src/main/res/values-te/strings.xml @@ -0,0 +1,127 @@ + + + షెల్టర్‌కు స్వాగతం + కొనసాగించు + యాప్ ఐసోలేషన్ సర్వీస్ + షెల్టర్ దాని ఐసోలేషన్ విధులను నిర్వహించడానికి డివైస్ అడ్మిన్ గా మారాలి. + యాప్ %sని ప్రారంభించలేరు, ఎందుకంటే దానికి GUI లేదు. + మీ స్క్రీన్‌ను లాక్ చేయడం సమయంలో ముందంజ యాప్‌లను (కనిపించే కార్యకలాపం ఉన్న) ఫ్రిజ్ చేయకండి. ఇది సంగీత ప్లేయర్‌ల వంటి యాప్‌లకు ఉపయోగకరంగా ఉండవచ్చు, కానీ తర్వాత \"బ్యాచ్ ఫ్రిజ్ షార్ట్‌కట్\" ద్వారా వాటిని చేతితో ఫ్రిజ్ చేయాలి. + ఫైల్ షట్ల్ + ఇన్‌స్టాల్ చేయబడుతోంది... + అనుమతి నిరాకరించబడింది లేదా మద్దతు పొందని పరికరం + అనువాదం + దయచేసి వేచి ఉండండి… + [ఫ్రోజెన్] %s + మేము ఇప్పుడు మీ కోసం షెల్టర్‌ని సెటప్ చేయడానికి సిద్ధంగా ఉన్నాము. మీ పరికరం Android 7 లేదా అంతకంటే తక్కువగా నడుస్తోంటే, మొదట మీ పరికరం \"Do Not Disturb\" మోడ్‌లో లేదని నిర్ధారించుకోండి, ఎందుకంటే మీరు సెటప్ ప్రక్రియను పూర్తి చేయడానికి తర్వాత ఒక నోటిఫికేషన్‌పై క్లిక్ చేయాలి. +\n +\nమీరు సిద్ధంగా ఉన్నప్పుడు, సెటప్ ప్రక్రియ ప్రారంభించడానికి \"తదుపరి\"పై క్లిక్ చేయండి. + కార్య ప్రొఫైల్‌లోని సంప్రదింపులకు ప్రధాన ప్రొఫైల్ నుండి యాక్సెస్‌ను తిరస్కరించండి. + చెల్లింపు సేవ స్టబ్ (ఉపయోగించవద్దు) + \"షెల్టర్\" అనేది ఇతర యాప్‌లను వేరుప్రొఫైల్‌లో నడపడంలో మీకు సహాయం చేసే యాప్. ఇది ఆండ్రాయిడ్‌లోని వర్క్ ప్రొఫైల్ ఫీచర్‌ను ఉపయోగించడం ద్వారా పని చేస్తుంది. +\n +\n\"తదుపరి\"ను క్లిక్ చేయండి, మేము మీకు షెల్టర్ గురించి మరిన్ని వివరాలు అందించాము మరియు సెటప్ ప్రక్రియలో మిమ్మల్ని మార్గనిర్దేశం చేస్తాము. +\n +\nక్రింది పేజీలన్నీ జాగ్రత్తగా చదవాలని మేము సిఫార్సు చేస్తాము. + ఇంటరాక్షన్ + అభినందనలు! షెల్టర్‌ని సెటప్ చేయడం పూర్తి చేయడానికి మీరు ఒక్క క్లిక్ దూరంలో ఉన్నారు. + జాబితాలోని దాచిన యాప్‌లను మానిప్యులేట్ చేయడం వల్ల క్రాష్‌లు మరియు వివిధ రకాల అనూహ్య ప్రవర్తనలు కలిగించవచ్చు. అయితే, ఫాల్టీ విక్రేత-కస్టమైజ్డ్ ROMలు వర్క్ ప్రొఫైల్‌లో అన్ని అవసరమైన సిస్టమ్ యాప్లను డిఫాల్ట్‌గా ఎనేబుల్ చేయని సమయంలో ఈ ఫీచర్ ఉపయోగకరంగా ఉండవచ్చు. మీరు కొనసాగితే, మీరు మీ స్వంతంగా ఉంటారు. + సంప్రదింపుల అన్వేషణను అడ్డుకోండి + ఇది ఎనేబుల్ చేసినప్పుడు, మీరు షెల్టర్‌లో ఫైల్‌లను బ్రౌజ్ / వీక్షించడానికి / ఎంచుకోవడానికి / కాపీ చేయడానికి ప్రధాన ప్రొఫైల్ నుండి మరియు పునాదిగా, డాక్యుమెంట్స్ UI (మీ లాంచర్‌లో ఫైల్‌లు లేదా డాక్యుమెంట్స్ అని పిలవబడుతుంది) లేదా డాక్యుమెంట్స్ UI మద్దతు ఉన్న అనువర్తనాలను మాత్రమే ఉపయోగించి చేసుకోగలరు (అవి డాక్యుమెంట్స్ UIలో మీరు ఎంచుకున్న ఫైల్‌లకు తాత్కాలిక యాక్సెస్ పొందుతాయి), అయితే ఫైల్ సిస్టమ్ ఆర్థికంగా ఇన్సొలేషన్‌ను ఉంచుతుంది. + షెల్టర్ సెటప్ పూర్తి. ఇప్పుడు షెల్టర్‌ను పునఃప్రారంభించటం జరుగుతోంది. షెల్టర్ ఆటోమేటిక్‌గా ప్రారంభమైతే, మీ లాంచర్ నుండి మళ్లీ ప్రారంభించవచ్చు. + ప్రధాన ప్రొఫైల్‌లో ఒక జట్టుపై NFC చెల్లింపు సేవను ఎనేబుల్ చేయండి, తద్వారా సెట్టింగ్‌లలో - NFC క్రింద ఉన్న నిర్లక్ష్య చెల్లింపుల ఎంపిక ఎనేబుల్ అవుతుంది, ఇది మీకు వర్క్ ప్రొఫైల్‌లో చెల్లింపు అనువర్తనాన్ని ఎంచుకోవడానికి అనుమతిస్తుంది. ఇది ప్రధాన ప్రొఫైల్‌లో అందుబాటులో లేదు అంటే వర్క్ ప్రొఫైల్‌లో చెల్లింపు అనువర్తనాన్ని ఎంచుకోవడం అసాధ్యమైన ఆండ్రాయిడ్ బగ్‌ను చుట్టుకుంటుంది. + బ్యాచ్ ఫ్రీజ్ + షెల్టర్ ముఖ్యమైనది + అనువర్తనం \"%s\" విజయవంతంగా ఫ్రిజ్ చేయబడింది + షెల్టర్‌కు ఫైల్ షటిల్ సరిగ్గా పనిచేయడానికి ఇతర యాప్‌లపై డ్రా చేయడం అవసరం. \"ఓకే\" బటన్‌ను నొక్కిన తర్వాత డైలాగ్‌లో చూపించిన రెండు (వ్యక్తిగత / వర్క్) షెల్టర్ యాప్‌లకు ఈ అనుమతిని ఎనేబుల్ చేయండి. ఈ అనుమతి ఫైల్ షటిల్ సేవలను బ్యాక్‌గ్రౌండ్‌లో ప్రారంభించడానికి ఉపయోగించబడుతుంది. + + మీరు ఇప్పుడు షెల్టర్ నుండి ఒక నోటిఫికేషన్‌ను చూడాలి. దయచేసి ఆ నోటిఫికేషన్‌ను నొక్కండి సెటప్ ప్రక్రియను ముగించడానికి. +\n +\nమీరు నోటిఫికేషన్‌ను చూడకపోతే, మీ పరికరం \"డో నాట్ డిస్టర్బ్\" మోడ్‌లో లేదు అని నిర్ధారించుకోండి మరియు నోటిఫికేషన్ సెంటర్‌ను కిందకి పుల్లండి. +\n +\nషెల్టర్‌ను రీసెట్ చేసి మళ్లీ ప్రారంభించడానికి, సెటింగ్స్‌లో షెల్టర్ యొక్క డేటాను క్లియర్ చేయవచ్చు. + బ్యాచ్ ఫ్రీజ్ సత్వరం సృష్టించండి + షెల్టర్ (వర్క్ ప్రొఫైల్)కి క్లోన్ చేయండి + ప్రధాన ప్రొఫైల్‌లో విజెట్‌లను అనుమతించండి + \"ఆటో ఫ్రిజ్\" జాబితాలోని అన్ని యాప్‌లు విజయవంతంగా ఫ్రిజ్ చేయబడ్డాయి. + ఇప్పుడు ఫ్రీజ్ చేయండి + బగ్ నివేదిక / ఇష్యూ ట్రాకర్ + అన్‌ఇన్‌స్టాల్ చేయండి + + అనుకూలత + ఆటో-ఫ్రీజ్ పెండింగ్‌లో ఉంది + క్రాస్-ప్రొఫైల్ ఇంటరాక్షన్‌ను అనుమతించండి + గురించి + మేము మీ కోసం షెల్టర్‌ను సెటప్ చేయలేకపోయామని మీకు తెలియజేయడానికి మాకు దురదృష్టం ఉంది. +\n +\nమీ పరికరంలో ఇప్పటికే ఒక వర్క్ ప్రొఫైల్ ఉంటే, అది షెల్టర్ యొక్క గత ఇన్స్టాలేషన్ లేదా మరొక అనువర్తనంలోనూ, షెల్టర్ ముందుకు సాగడానికి ముందు దాన్ని సెటింగ్‌లలో -> ఖాతా ద్వారా తొలగించాలి. +\n +\nలేకపోతే, మీరు సెటప్‌ను చేతితో రద్దు చేయకపోతే, సెటప్ విఫలమైన కారణం సాధారణంగా చాలా మార్పులు చేసిన సిస్టమ్ లేదా షెల్టర్ మరియు ఇతర వర్క్ ప్రొఫైల్ మేనేజర్ల మధ్య సంకర్షణగా ఉంటుంది. దురదృష్టవశాత్తు, దీనిపై మేము చేసేMuch చేయడం లేదు. +\n +\nమీరైతే \"తదుపరి\"పై క్లిక్ చేసి బయటకు వెళ్ళండి. + MIUIలో మరో ప్రొఫైలుకు నాన్-సిస్టమ్ యాప్‌లను క్లోన్ చేయడం ప్రస్తుతం సాధ్యం కాదు. దయచేసి మీ సిస్టమ్ యొక్క యాప్ స్టోర్ (ఉదాహరణకు, ప్లే స్టోర్)ని ఇతర ప్రొఫైలుకు క్లోన్ చేసి, అక్కడ నుండి యాప్‌లను ఇన్‌స్టాల్ చేయండి. + + షెల్టర్ సేవ + బ్యాచ్ ఆపరేషన్ + అన్‌ఫ్రీజ్ చేసి ప్రారంభించండి + సేవలు + ఆటో ఫ్రిజ్ సేవ + వర్క్ ప్రొఫైల్‌ను అందుబాటులోకి తీసుకోలేకపోతున్నాము. షెల్టర్‌ను పునఃప్రారంభించి మళ్లీ ప్రయత్నించండి. + షెల్టర్ తదుపరి స్క్రీన్ లాక్ ఈవెంట్‌లో \"అన్‌ఫ్రీజ్ & లాంచ్\" నుండి ప్రారంభించబడిన యాప్‌లను ఆటో-ఫ్రీజ్ చేస్తుంది. + అనువర్తనం \"%s\" విజయవంతంగా అన్‌ఇన్‌స్టాల్ చేయబడింది + అన్‌ఫ్రిజ్ + షెల్టర్ కంట్రోల్ లో లేని ప్రొఫైల్‌కు సిస్టమ్ యాప్‌లను క్లోన్ చేయలేరు. + సెటప్ విఫలమైంది + వర్క్ ప్రొఫైల్ కనుగొనబడలేదు. ప్రొఫైల్‌ను మళ్లీ అందుబాటులోకి తీసుకురావడానికి దయచేసి యాప్‌ను పునఃప్రారంభించండి. + అనువర్తనం \"%s\" విజయవంతంగా అన్‌ఫ్రిజ్ చేయబడింది + వర్షన్ + అన్‌ఫ్రిజ్ మరియు/లేదా ప్రారంభ Shortcut‌ని సృష్టించు + షెల్టర్‌కు ఫైల్ షటిల్ కోసం అన్ని ఫైళ్లకు ప్రాప్యత అవసరం. \"ఓకే\" బటన్‌ను నొక్కిన తర్వాత డైలాగ్‌లో చూపించిన రెండు (వ్యక్తిగత / వర్క్) షెల్టర్ యాప్‌లకు ఈ అనుమతిని ఎనేబుల్ చేయండి. + డాక్యుమెంట్స్ UIని తెరువు + మేము మీ పరికరంలో వర్క్ ప్రొఫైల్‌ను ప్రారంభించడానికి మరియు షెల్టర్‌ను సెటప్ చేయడానికి ప్రయత్నిస్తున్నాము. + ప్రారంభించు + డిఫాల్ట్‌గా, షెల్టర్ ఏ వ్యక్తిగత అనుమతులను అడగదు. అయితే, మీరు సెటప్ ప్రక్రియను కొనసాగించిన తర్వాత, షెల్టర్ వర్క్ ప్రొఫైల్‌ను సెటప్ చేయడానికి ప్రయత్నిస్తుంది, అందువల్ల పేర్కొన్న ప్రొఫైల్‌కు ప్రొఫైల్ మేనేజర్ గా మారుతుంది. +\n +\nదీని ద్వారా షెల్టర్‌కు ఆ ప్రొఫైల్‌లో పరికర పరిపాలకుడి (డివైస్ అడ్మిన్) అనుమతులకు సమానమైన విస్తృత అనుమతుల జాబితా లభిస్తుంది, అయితే అవి ఆ ప్రొఫైల్‌కు మాత్రమే పరిమితమవుతాయి. షెల్టర్ యొక్క మెజారిటీ ఫీచర్ల కోసం ప్రొఫైల్ మేనేజర్‌గా ఉండటం అవసరం. +\n +\nషెల్టర్ యొక్క కొన్ని అధునాతన ఫీచర్లు వర్క్ ప్రొఫైల్ బయట మరిన్ని అనుమతులను అవసరం కావచ్చు. అవసరమైనప్పుడు, మీరు సంబంధిత ఫీచర్‌లను ప్రారంభించినప్పుడు, షెల్టర్ ఆ అనుమతులను వేరుగా అడుగుతుంది. + షెల్టర్ + షెల్టర్‌లో APK ఇన్‌స్టాల్ చేయండి + అనువర్తనం \"%s\" విజయవంతంగా క్లోన్ చేయబడింది + మీరు షెల్టర్‌ను ప్రారంభించే సమయానికి వర్క్ మోడ్‌ను అడ్డించారు అనిపిస్తోంది. మీరు ఇప్పుడు దీన్ని ఎనేబుల్ చేసినట్లయితే, దయచేసి షెల్టర్‌ను మళ్లీ ప్రారంభించండి. + + సోర్స్ కోడ్ + శోధించండి + మీ లాంచర్‌కు షార్ట్‌కట్స్‌ను జోడించలేరు. మరింత సమాచారం కోసం దయచేసి డెవలపర్‌ను సంప్రదించండి. + ఆటో ఫ్రీజ్ + షెల్టర్ ఇప్పుడు నడుస్తోంది… + ఆటో ఫ్రిజ్ ఆలస్యం + షెల్టర్ AOSP లాంటి ఆండ్రాయిడ్ డెరివేటివ్‌లపై అభివృద్ధి చేయబడింది మరియు పరీక్షించబడింది. ఇందులో AOSP (ఆండ్రాయిడ్ ఓపెన్ సోర్స్ ప్రాజెక్ట్), Google Android (Pixelsపై), మరియు LineageOS వంటి AOSP ఆధారిత ఓపెన్ సోర్స్ కస్టమ్ ROMలు ఎక్కువగా ఉన్నాయి. మీ ఫోన్ పై ఉంచిన ఆండ్రాయిడ్ డెరివేటివ్‌లలో ఏదైనా ఉంటే, అభినందనలు! షెల్టర్ మీ పరికరంలో సరిగా పనిచేసే అవకాశం ఉంది. +\n +\nకొంతమంది పరికర తయారీదారులు ఆండ్రాయిడ్ కోడ్ బేస్‌లో చాలా దూకుడైన అనుకూలీకరణలు ప్రవేశపెడతారు, ఇది సంగర్షణలు, అనుకూలత సమస్యలు మరియు అనూహ్య ప్రవర్తనకు కారణమవుతుంది. కొంతమంది కస్టమ్ ROMలు కూడా అనుకూలతను విచ్ఛిన్నం చేసే మార్పులను ప్రవేశపెట్టవచ్చు, కానీ సాధారణంగా ఇవి ఫోన్ తయారీదారుల మార్పులతో పోలిస్తే చాలా అరుదుగా జరుగుతాయి. +\n +\nషెల్టర్ కేవలం సిస్టమ్ అందించే వర్క్ ప్రొఫైల్ ఫీచర్‌కు ఇన్టర్ఫేస్ మాత్రమే. సిస్టమ్ అందించే ఫీచర్ పనిచేయకపోతే లేదా ప్రామాణికం కాకపోతే, షెల్టర్ స్వతహాగా ఆ సమస్యను పరిష్కరించలేము. మీరు ప్రస్తుతం వర్క్ ప్రొఫైల్‌లను విరమించడానికి ప్రసిద్ధి చెందిన విక్రేత-మార్పుచేసిన ఆండ్రాయిడ్ వర్షన్‌ను ఉపయోగిస్తున్నట్లయితే, మీకు హెచ్చరిక ఇచ్చాము. అయినప్పటికీ మీరు కొనసాగవచ్చు, కానీ ఈ పరిస్థితులలో షెల్టర్ సరైన ప్రవర్తనకాని గ్యారంటీ లేదు. + షెల్టర్‌ని సెటప్ చేయడానికి ఇక్కడ క్లిక్ చేయండి + షెల్టర్‌కు ఇది చేయడానికి ఉపయోగం స్థితులు అనుమతి అవసరం. \"ఓకే\" బటన్‌ను నొక్కిన తర్వాత డైలాగ్‌లో చూపిన రెండు షెల్టర్ యాప్‌లకు ఈ అనుమతిని ఎనేబుల్ చేయండి. అది చేయనట్లయితే, ఈ ఫీచర్ సరిగ్గా పనిచేయదు. + + అనుమతుల గురించి ఒక మాట + వర్క్ ప్రొఫైల్‌లో అప్లికేషన్ ఇన్‌స్టాలేషన్ పూర్తి చేయబడింది. + ప్రధాన + మీ లాంచర్‌పై షార్ట్‌కట్ సృష్టించబడింది. + సెట్టింగ్స్ + ముఖ్యమైన యాప్‌లను తొలగించు + చెల్లింపు సేవ స్టబ్ + %s కోసం ఆపరేషన్స్ + షెల్టర్ కంట్రోల్ లో లేని ప్రొఫైల్‌లో సిస్టమ్ యాప్‌లను అన్‌ఇన్‌స్టాల్ చేయలేరు. + ఏదైనా కొనసాగించండి + + ఫ్రిజ్ + వీడ్కోలు + సిద్ధంగా ఉన్నారా? + + స్క్రీన్ లాక్ అయినప్పుడు, \"అన్‌ఫ్రిజ్ & లాంచ్ షార్ట్‌కట్\" నుండి ప్రారంభించిన యాప్‌లను ఆటోమేటిక్‌గా ఫ్రిజ్ చేయండి. + ప్రధాన ప్రొఫైల్‌కి క్లోన్ చేయండి + అన్ని యాప్‌లను చూపించు + + ఫ్రీజ్ చేయండి + %d నిమిషాలు + \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c1d7f3a..0e870fe 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -3,7 +3,7 @@ Uyumluluk İzinler hakkında Eylem gerekli - Hazır mısınız\? + Hazır mısınız? Ayarlar Sürüm Hakkında @@ -18,7 +18,6 @@ \"%s\" uygulaması başarıyla kaldırıldı Devam et İptal - Görüntü Dosyası Seçin Uygulama İzolasyon Hizmeti İzolasyon hizmetinin çalışabilmesi için Shelter\'ı Cihaz Yöneticisi yap. Kurulum başarısız @@ -58,7 +57,6 @@ Çoklu Dondur Kısayolu Oluştur Çoklu Dondur Rehber Erişimini Engelle - Görüntü Seçiciyi kamera uygulaması gibi göster \"%s\" uygulaması başarıyla donduruldu \"%s\" uygulaması başarıyla aktifleştirildi %s için İşlemler @@ -114,5 +112,4 @@ Dosya Köprüsü özelliğini kullanmak için Shelter\'ın Tüm Dosyalara erişmesi gerekiyor. Lütfen \"Tamam\" seçeneğine tıkladıktan sonra İKİ SHELTER UYGULAMASINA DA (Kişisel / İş) bu izni verin. Dosya Köprüsü özelliğinin düzgün bir şekilde çalışabilmesi için Shelter\'ın Diğer Uygulamalar Üzerinde Göster iznine ihtiyacı var. Lütfen \"Tamam\" seçeneğine tıkladıktan sonra İKİ SHELTER UYGULAMASINA DA (Kişisel / İş) bu izni verin. Söz konusu izin, Dosya Köprüsü hizmetlerini arkaplanda başlatmak için kullanılır. Bu özelliği kullanmak için Shelter\'ın Kullanım Erişimi iznine ihtiyacı var. Lütfen \"Tamam\" seçeneğine tıkladıktan sonra İKİ SHELTER UYGULAMASINA DA (Kişisel / İş) bu izni verin, aksi takdirde söz konusu özellik düzgün bir şekilde çalışmayabilir. - Başka uygulamalarda kullanmanız için sahte bir kamera uygulaması oluşturur ve böylece Dosya Gezgini üzerinden (veya etkinse Dosya Köprüsü üzerinden) herhangi bir görüntü dosyasını bu uygulamalara kameradan çekilmiş bir fotoğraf olarak sunabilirsiniz. Bu özellik, normalde Dosya Gezginine erişimi olmasa bile, kamera uygulamaları üzerinden fotoğraf çekme yetkisine sahip tüm uygulamalar için Dosya Köprüsü özelliğini etkinleştirir. \ No newline at end of file diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml new file mode 100644 index 0000000..0a12b46 --- /dev/null +++ b/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,16 @@ + + + Сервіс ізоляції додатку + Shelter має стати адміністратором пристрою, щоб виконувати свої завдання ізоляції. + Закрити + Продовжити + Ласкаво просимо до Shelter + Декілька слів про дозволи + Shelter - це програма, яка допоможе вам запускати інші програми в ізольованому профілі. Вона використовує функцію Робочий профіль в Android. +\n +\nНатисніть \"Далі\", і ми надамо вам більше інформації про Shelter і проведемо вас через процес налаштування. +\n +\nМи рекомендуємо вам уважно прочитати всі наступні сторінки. + Ми намагаємося ініціалізувати Work Profile та налаштувати Shelter на вашому пристрої. + Shelter + \ No newline at end of file diff --git a/app/src/main/res/values-v31/colors.xml b/app/src/main/res/values-v31/colors.xml index 73ebb01..ea8e98d 100644 --- a/app/src/main/res/values-v31/colors.xml +++ b/app/src/main/res/values-v31/colors.xml @@ -1,6 +1,6 @@ - @android:color/system_accent1_10 + @android:color/system_accent1_0 @android:color/system_accent1_500 @android:color/system_accent3_500 @android:color/system_accent1_100 diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 9fb0ae1..6bf32d3 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -2,7 +2,9 @@ Chúng tôi rất tiếc phải thông báo cho bạn rằng chúng tôi đã không thể thiết lập Shelter cho bạn. \n -\nNếu bạn đã không huỷ thiết lập theo cách thủ công, thì lý do của sự thất bại thường là một hệ thống bị sửa đổi sâu, hoặc có xung đột giữa Shelter và các trình quản lý Hồ sơ công việc khác. Không may mắn là chúng tôi không thể làm gì nhiều về điều này. +\nNếu thiết bị của bạn đã có một Hồ sơ công việc được tạo từ Shelter hoặc một ứng dụng khác, bạn sẽ phải xoá hồ sơ đó trong Cài đặt -> Tài khoản trước khi Shelter có thể tiếp tục. +\n +\nNgoài ra, nếu bạn đã không huỷ thiết lập theo cách thủ công, thì lý do thất bại thường là do hệ thống bị sửa đổi sâu, hoặc có xung đột giữa Shelter và các trình quản lý Hồ sơ công việc khác. Không may mắn là chúng tôi không thể làm gì nhiều về điều này. \n \nNhấn Tiếp để thoát. Bây giờ, bạn rất có thể đang thấy một thông báo từ Shelter. Vui lòng nhấn vào thông báo đó để hoàn thành quá trình thiết lập. @@ -19,10 +21,9 @@ Tiếp tục Dịch vụ cô lập ứng dụng Shelter cần trở thành Quản trị viên thiết bị để thực hiện các công việc cô lập của nó. - Chọn tệp hình ảnh Một lời về các quyền Sự tương thích - Sẵn sàng chưa\? + Sẵn sàng chưa? Vui lòng đợi… Thiết lập thất bại Yêu cầu hành động @@ -70,12 +71,11 @@ \n \nMột số hãng thiết bị giới thiệu những tuỳ biến rất gây xâm hại vào mã nguồn của Android, việc này dẫn đến sự xung đột, không tương thích và hành vi không mong đợi. Một số bản ROM tuỳ chỉnh cũng có thể giới thiệu các thay đổi phá vỡ sự tương thích, nhưng nói chung thì chúng xảy ra hiếm hơn so với những sự không tương thích do hãng điện thoại gây ra. \n -\nShelter chỉ là một giao diện vào tính năng Hồ sơ công việc được hệ thống cung cấp. Nếu tính năng được hệ thống cung cấp bị hỏng hoặc phi tiêu chuẩn, Shelter không thể tự giải quyết vấn đề một cách nhiệm màu. Nếu bạn hiện đang sử dụng một phiên bản Android được hãng sửa đổi được biết là làm hỏng Hồ sơ công việc, bạn đã được cảnh báo. Bạn có thể vẫn tiếp tục, nhưng không có đảm bảo rằng Shelter sẽ hoạt động đúng dưới hoàn cảnh này. - Chúng tôi bây giờ đã sẵn sàng thiết lập Shelter cho bạn. Trước hết, vui lòng chắc chắn rằng thiết bị của bạn đang không ở trong chế độ Không làm phiền, vì bạn sẽ cần phải nhấn vào một thông báo vào lúc sau để hoàn thành quá trình thiết lập. +\nShelter chỉ là một giao diện truy cập tính năng Hồ sơ công việc được hệ thống cung cấp. Nếu tính năng được hệ thống cung cấp bị hỏng hoặc phi tiêu chuẩn, Shelter không thể tự giải quyết vấn đề một cách nhiệm màu. Nếu bạn hiện đang sử dụng một phiên bản Android được hãng sửa đổi được biết là làm hỏng Hồ sơ công việc, bạn đã được cảnh báo. Bạn có thể vẫn tiếp tục, nhưng không có đảm bảo rằng Shelter sẽ hoạt động đúng dưới hoàn cảnh này. + Chúng tôi bây giờ đã sẵn sàng thiết lập Shelter cho bạn. Trước hết, vui lòng chắc chắn rằng thiết bị của bạn đang không ở chế độ Không làm phiền nếu thiết bị đang chạy Android 7 hoặc thấp hơn, vì bạn sẽ cần phải nhấn vào một thông báo vào lúc sau để hoàn thành quá trình thiết lập. \n \nKhi bạn đã sẵn sàng, hãy nhấn vào \"Tiếp\" để bắt đầu quá trình thiết lập. Chúng tôi đang cố khởi tạo Hồ sơ công việc và thiết lập Shelter trên thiết bị của bạn. - Trưng bày một ứng dụng máy ảnh giả cho các ứng dụng khác, việc này cho phép bạn chọn một hình ảnh bất kỳ từ Giao diện Tài liệu (và Chia sẻ tệp nếu được bật) làm bức ảnh được chụp. Việc này sẽ bật Chia sẻ tệp cho bất kỳ ứng dụng nào hỗ trợ việc gọi các ứng dụng máy ảnh khác để chụp ảnh, kể cả nếu chúng không trực tiếp hỗ trợ Giao diện Tài liệu. Độ trễ tự động đóng băng Bỏ qua các ứng dụng ở trước KHÔNG đóng băng các ứng dụng ở trước (có hoạt động có thể nhìn thấy được) khi bạn khoá màn hình. Việc này có thể hữu ích đối với các ứng dụng như trình phát nhạc, nhưng sau đó bạn sẽ cần phải đóng băng chúng theo cách thủ công qua \"Lối tắt Đóng băng hàng loạt\". @@ -91,7 +91,6 @@ Shelter cần quyền Thống kê sử dụng để làm việc này. Vui lòng bật quyền đó cho CẢ HAI ứng dụng Shelter được hiện trong hộp thoại sau khi bạn nhấn \"Ok\". Tính năng này sẽ không hoạt động đúng nếu bạn không làm vậy. Chia sẻ tệp Khi được bật, bạn sẽ có thể duyệt / xem / chọn / sao chép các tệp trong Shelter từ hồ sơ chính và ngược lại, CHỈ qua Giao diện Tài liệu (có tên là Tệp hoặc Tài liệu trên launcher của bạn) hoặc các ứng dụng có hỗ trợ Giao diện Tài liệu (chúng chỉ có quyền truy cập tạm thời vào các tệp bạn chọn trong Giao diện Tài liệu), trong khi vẫn giữ sự cô lập hệ thống tệp. - Trình chọn hình ảnh dưới dạng máy ảnh giả Chặn tìm kiếm danh bạ Từ chối quyền truy cập danh bạ từ hồ sơ chính trong hồ sơ công việc. Dịch vụ diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0efc6ae..11e7a3e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -5,7 +5,6 @@ 继续 App 隔离服务 Shelter 需要成为设备管理员才能正常进行 App 隔离等操作。 - 选择图片文件 Shelter 重要通知 点击这里完成 Shelter 初始化 @@ -46,8 +45,6 @@ 交互 文件穿梭 打开以后,您将可以且仅可以从系统的 Documents UI (启动器上的名称为 文件 或 下载) 或支持 Documents UI 的 APP 中 浏览 / 查看 / 选择 / 复制 Shelter 内的文件到主用户,反之亦然。这不会影响对文件系统的隔离。即使是支持 Documents UI 的 App 也只能临时获取您选择的文件的访问权限。 - 图片选择器伪装为相机 - 向其他 App 提供一个伪装的相机 App,允许您从 Documents UI (包括 "文件穿梭" 功能) 选择任意文件作为 "拍摄结果"。这将使您能够在任何支持调用系统相机的 App 中选择来自 "文件穿梭" 的文件,无论 App 本身是否支持 Documents UI。 服务 自动冻结服务 在您锁屏时,自动冻结您通过 \"解冻并运行\" 启动的应用。 @@ -87,7 +84,7 @@ 翻译 阻止访问联系人 阻止主用户中的应用访问工作用户的联系人资料。 - 欢迎来到Shelter + 欢迎来到 Shelter 关于权限的说明 请稍等… 我们正在尝试初始化工作档案并在您的设备上设置 Shelter。 @@ -115,9 +112,9 @@ \nShelter可能会在你的设备上正确工作。 一些设备供应商在安卓代码库中引入了非常具有侵略性的定制,导致冲突、不兼容和意外行为。一些定制的ROM也会引入破坏兼容性的变化,但一般来说,与手机供应商引入的不兼容问题相比,这些情况更少发生。 \n \nSheler只是一个进入系统所提供的工作档案功能的接口。如果系统提供的功能是坏的或不标准的,Shelter不可能自己神奇地解决这个问题。如果你目前使用的是供应商修改过的Android版本,而该版本已知会破坏工作档案,你已经被警告了。你可以继续进行,但不能保证Shelter在这些情况下的行为是正常的。 - Shelter是一个帮助你在一个独立的配置文件中运行其他应用程序的应用程序。它通过利用Android的工作档案功能来实现。 + Shelter 是一个帮助你在独立的配置文件中运行其他 App 的应用程序。它基于 Android 的工作档案功能实现。 \n -\n点击 \"下一步\",我们将向你提供更多关于Shelter的信息,并指导你完成设置过程。 +\n点击 \"下一步\",我们将向你提供更多关于 Shelter 的信息,并带领你完成设置。 \n \n我们建议你仔细阅读以下所有的页面。 您现在应该会看到来自 Shelter 的通知。 请点击该通知 完成设置过程。 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ed0d2ab..f7cb99b 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -2,33 +2,32 @@ 服務 自動凍結服務 - 在您鎖定螢幕時,自動凍結您通過「解除凍結並啟動」啓動的應用。 - 自動凍結延遲 + 在您鎖屏時,自動凍結您通過 \"解凍並運行\" 啓動的應用。 + 凍結延時 關於 版本 - 原始碼 + 源代碼 翻譯 - 錯誤報告/問題追蹤 + Bug 報告 您必須授予「裝置管理員」權限才能使 Shelter 正常工作。請重試。 我們正在爲您準備 Shelter 帳戶,請稍候…… - 權限不足或裝置不相容 - 沒有找到工作資料夾,請重新啓動應用程式以重新佈建帳戶。 - 無法佈建工作資料夾,您可能需要重啓 Shelter 並重試。 - 應用程式「%s」解除安裝成功 - 應用程式「%s」克隆成功 - 應用程式「%s」凍結成功 - 應用程式「%s」解除凍結成功 - 無法將系統應用程式克隆至 Shelter 沒有管理權限的帳戶中。 - 無法在 Shelter 沒有管理權限的帳戶中解除安裝系統應用程式。 - %s 可用作業 - 所有在「自動凍結」列表內的應用程式均已成功凍結。 - 無法啓動沒有 GUI 的應用程式 %s。 - 當前無法在 MIUI 上將非系統應用程式克隆到其他帳戶。請將系統的應用商店(如 <b> Play 商店</b>)克隆到其他帳戶中,然後從那里安裝應用程式。Play Store) into the other profile and then install apps from there. - 忽略並繼續 - 修改列表中預設隱藏的應用程式可能會導致崩潰和各種意外行為。但是當存在故障的廠商客製化 ROM 在預設情況下未在工作資料中啟用所有必需的系統應用程式時,此功能很有用。如果您選擇繼續,請確保您瞭解您在做什麼。 - 向其他應用程式提供一個僞裝爲相機的應用程式,允許您從 Documents UI(包括 檔案穿梭 功能)選擇任意檔案作爲拍攝結果。這將是您能在其他支援調用相機的應用中選擇來自 檔案穿梭 的檔案,即使他們不支援 Documents UI。 - Shelter 設定完成。現在需要重新啟動 Shelter。如果 Shelter 沒有自動啟動,您可能需要從啟動器中再次啟動它。 - 跳過前台應用程式 + 權限不足 / 設備不兼容 + 工作用戶不可用,請重新啓動 Shelter 以重新初始化。 + 無法創建工作用戶,您可以重啓 Shelter 並再試一次。 + 應用 \"%s\" 卸載成功 + 應用 \"%s\" 克隆成功 + 應用 \"%s\" 凍結成功 + 應用 \"%s\" 解凍成功 + 無法將系統應用克隆到 Shelter 無權管理的用戶下。 + 無法在 Shelter 無權管理的用戶中卸載系統應用。 + %s 可用操作 + 所有在 \"自動凍結\" 列表中的應用都已經凍結成功。 + 無法啓動沒有用戶界面的應用 %s。 + 目前無法在 MIUI 上克隆非系統應用。請先克隆您的系統應用商店 (如 Play Store) 然後從克隆的應用商店中安裝應用。 + 無視並繼續 + 對列表中默認隱藏的應用執行操作可能導致崩潰以及其他各種無法預料的行爲。但是,當您的手機廠商沒有正確在工作用戶中開啓所有必要的系統組件應用的時候,這個功能可以幫助您解決問題。如果您選擇繼續,您確保您瞭解您在做什麼,Shelter 無法提供任何保證。 + Shelter 已初始化完成,正在啓動 Shelter。如果 Shelter 沒有自動啓動,請您從啓動器手動啓動它。 + 跳過前臺應用 您即將開始設定 Shelter。 \n \n此應用程式基於 Android 的 工作資料夾 功能以隔離應用程式。如果您正在使用的廠商/客製化 ROM 破壞了此功能(如 MIUI),您應該立即 退出不要 使用此應用程式。 @@ -38,92 +37,90 @@ \n如果您是開發者並希望使 Shelter 在 MIUI 等不相容的 ROM 上工作,歡迎提交 pull request。如果您的裝置在運行不相容的 ROM 時損毀,開發者將 不承擔任何責任 。 \n \n您將在完成設定後收到一則通知,請確定您的裝置 不在 勿擾模式中。 - 啓用後,您將可以且僅可以從系統的 Documents UI(啓動器上的名稱爲 檔案)或支援 Documents UI 的應用程式中瀏覽、查看、選擇、複製 Shelter 內的檔案至主帳戶,反之亦然。這不會影響對檔案系統的隔離。 - 不在您鎖定螢幕時凍結前台應用程式(有可見活動)。這對於音樂播放器等應用來說很有用,但您需要手動使用「批次凍結捷徑」凍結它們。 - 您似乎在啓動 Shelter 的同時停用了工作資料夾,如果您現在已經啓用了工作資料夾,請重新啓動 Shelter。 - 已在您的啓動器上創建捷徑。 - Shelter 需要 使用記錄存取權 來做這件事,請在點按「確定」後出現的窗口中爲 兩個 Shelter 應用程式均授予此權限,如果沒有授權會導致此功能無法正常運作。 - Shelter 需要訪問 全部檔案 的權限以啓用檔案穿梭。請在點按「確定」後出現的窗口中爲 兩個 Shelter 應用程式均授予此權限。 - Shelter 需要 顯示在其他應用上層 的權限以正常使用檔案穿梭。請在點按「確定」後出現的窗口中爲 兩個 Shelter 應用程式均授予此權限,此權限用於在後台啟動檔案穿梭服務。 - 批次作業 - 克隆到 Shelter (工作資料夾) - 無法新增捷徑至您的啓動器。請連絡開發者以獲得更多資訊。 + 打開以後,您將可以且僅可以從系統的 Documents UI (啓動器上的名稱爲 文件 或 下載) 或支持 Documents UI 的 APP 中 瀏覽 / 查看 / 選擇 / 複製 Shelter 內的文件到主用戶,反之亦然。這不會影響對文件系統的隔離。即使是支持 Documents UI 的 App 也只能臨時獲取您選擇的文件的訪問權限。 + 在您鎖屏的時候,不要凍結前臺應用 (鎖屏時仍有可見窗口的應用)。這主要用於音樂播放器等 App,但您將需要在使用完成後手動使用 \"批量凍結\" 快捷方式凍結它們。 + 工作模式 (Work Mode) 已被您關閉,請開啓後再啓動 Shelter。 + 快捷方式已創建。 + Shelter 需要 使用情況數據 來做這件事。請在按 \"確定\" 後出現的窗口中,對 兩個 Shelter都打開此權限。如果沒有全部打開,該功能將無法正確運作。 + File Shuttle 需要訪問 全部文件 的權限。請在接下來的對話框中對 兩個 Shelter (工作用戶內 / 外) 都啓用該權限。 + File Shuttle 需要 懸浮窗 權限才能在 Shelter 不在運行時正常啓動。請在接下來的對話框中對 兩個 Shelter (工作用戶內 / 外) 都打開該權限。 + 批量操作 + 克隆到 Shelter (工作用戶) + 無法在您的啓動器上添加快捷方式,請聯繫開發者。 再見 繼續 - 應用程式隔離服務 - Shelter 需要成為裝置管理員才能執行其隔離任務。 - 選擇一個圖片檔案 - 點此完成 Shelter 的設定 - 恭喜!您離完成 Shelter 的設定僅隔一步之遙。 + App 隔離服務 + Shelter 需要成爲設備管理員才能正常進行 App 隔離等操作。 + 點擊這裏完成 Shelter 初始化 + 您距離使用 Shelter 僅有一步之遙。 Shelter 服務 - Shelter 正在運行…… - 正在等待自動凍結 - 立即凍結 + Shelter 正在運行 … + 自動凍結等待中 + 立刻凍結 正在安裝…… - 主帳戶 - 「已凍結」 %s - Shelter 將會在下一次鎖定螢幕時凍結使用「解除凍結並啟動」的應用程式。 + 主用戶 + [已凍結] %s + Shelter 將會在您下次鎖屏時自動凍結使用 \"解凍並運行\" 啓動的應用。 Shelter Shelter 重要通知 - 克隆到主帳戶 - 解除安裝 + 克隆到主用戶 + 卸載 凍結 解除凍結 - 啟動 - 創建解除凍結並運行的捷徑 - 解除凍結並啟動 + 運行 + 創建解凍並運行快捷方式 + 解凍並運行 自動凍結 - 允許在主帳戶中創建小工具 - 搜尋 - 批次凍結 + 允許在主用戶中創建小工具 + 搜索 + 批量凍結 凍結 - 安裝 APK 至 Shelter - 已成功在工作資料夾中安裝應用程式。 - 顯示全部應用程式 - 打開檔案管理員 - 設定 - 互動 - 檔案穿梭 - 圖片選擇器僞裝爲相機 - 創建批次凍結的捷徑 - 封鎖聯絡人搜尋 - 阻止主帳戶中的應用程式存取工作資料夾中的連絡人。 + 安裝 APK 到 Shelter + 已成功在工作用戶內安裝 APK。 + 顯示全部應用 + 打開文件管理器 + 設置 + 交互 + 文件穿梭 + 創建批量凍結快捷方式 + 阻止訪問聯繫人 + 阻止主用戶中的應用訪問工作用戶的聯繫人資料。 歡迎來到 Shelter - Shelter 可以幫助你隔離某些應用程式,透過使用 Work Profile 來創建一個新profile, 與你現正使用的profile是隔絕的。 + Shelter 是一個幫助你在獨立的配置文件中運行其他 App 的應用程序。它基於 Android 的工作檔案功能實現。 \n -\n如欲了解詳情並開始準備安裝,請按\"Next\"。 +\n點擊 \"下一步\",我們將向你提供更多關於 Shelter 的信息,並帶領你完成設置。 \n -\n請小心留意下幾頁的須知。 - Shelter 本身不會要求權限,但創建Work Profile 後,會成為Work Profile 的管理員。 +\n我們建議你仔細閱讀以下所有的頁面。 + 默認情況下,Shelter不會要求任何個人權限。然而,一旦你繼續進行設置過程,Shelter將嘗試設置一個工作檔案,併成爲此檔案的檔案管理員。 \n -\nShelter 將會在Work Profile 內取得相當於管理員的權限,為了令Shelter 正常運作,這些權限是必須的。 +\n這將授予Shelter在配置文件內的大量權限,與設備管理員的權限相當,儘管只限於配置文件內。爲了實現Shelter的大部分功能成爲檔案管理員是必要的。 \n -\n某些先進功能或需要在Work Profile 外徵求額外權限。如有需要,Shelter 將會在您開啟該功能時,邀請你提供該權限。 - Shelter 為基於Android Open Source Project (AOSP) 的Android 作業系統而設,包括Google 版本 (Pixel 系列)的Android, 及大部數基於AOSP 的開源作業系統,如LineageOS, Calyx OS等。如果你使用上述作業系統,Shelter 很大機會可以正常運作。 +\nShelter 的一些高級功能可能需要更多權限外部工作資料。當需要時,Shelter將在你啓用相應的功能時單獨要求這些權限。 + Shelter是在類似AOSP的安卓衍生品上開發和測試的。這包括AOSP(安卓開源項目),谷歌安卓(在Pixels上),以及大多數基於AOSP的開源定製ROM,如LineageOS。如果你的手機正在運行上面列出的安卓衍生品之一,那麼恭喜你!Shelter可能會正常工作。 \n -\n某些公司會大幅修改 Android, 可能會導致不兼容,衝突,或其他未知反應。間中,某些作業系統亦會作出一些導致不兼容的變化。 +\nShelter可能會在你的設備上正確工作。 一些設備供應商在安卓代碼庫中引入了非常具有侵略性的定製,導致衝突、不兼容和意外行爲。一些定製的ROM也會引入破壞兼容性的變化,但一般來說,與手機供應商引入的不兼容問題相比,這些情況更少發生。 \n -\nShelter 僅提供創建Work Profile 的版面, 並不能解決非標準或有問題的軟件或硬件。如果你的Android 版本不符合上述描述, 請注意:你可以安全地使用Shelter, 但Shelter 未必可以正常運作。 - Shelter 已經發出了一則通知。請按該通知以完成設置。 +\nSheler只是一個進入系統所提供的工作檔案功能的接口。如果系統提供的功能是壞的或不標準的,Shelter不可能自己神奇地解決這個問題。如果你目前使用的是供應商修改過的Android版本,而該版本已知會破壞工作檔案,你已經被警告了。你可以繼續進行,但不能保證Shelter在這些情況下的行爲是正常的。 + 您現在應該會看到來自 Shelter 的通知。 請點擊該通知 完成設置過程。 \n -\n如果該通知沒有出現,請確保電話現在沒有使用勿擾模式,並再次檢查所有通知。 +\n如果您沒有看到通知,請確保您的設備未處於“請勿打擾”模式並嘗試下拉通知中心。 \n -\n欲重設Shelter,可以去電話設定清除Shelter 的數據。 - 關於Shelter 所需的權限 +\n要重置 Shelter 並重新開始,您可以在設置中清除 Shelter 的數據。 + 關於權限的說明 兼容性 - 設置失敗 - Shelter 正在啟動 Work Profile。 - 請稍候… - 準備好未? - 請確保電話現在沒有使用勿擾模式,以容許一則通知出現,以作完成設置Shelter。請按該則通知。 + 安裝失敗 + 我們正在嘗試初始化工作檔案並在您的設備上設置 Shelter。 + 請稍等… + 準備好? + 我們現在已準備好爲您設置 Shelter。如果您的設備運行的是 Android 7 或更低版本,請首先確保您的設備是 不是 請勿打擾模式,因爲您需要 點擊通知 稍後完成設置過程。 \n -\n完成後,請按下頁。 - 很遺憾地通知您,我們無法為您設置 Shelter。 +\n準備好後,單擊“下一步”開始設置過程。 + 我們很遺憾地通知您,我們無法爲您設置Shelter。 \n -\n如果您的設備已經有一個工作配置文件,無論是來自以前安裝的 Shelter 還是來自其他應用程序,您必須在設置 -> 帳戶中刪除該配置文件,然後 Shelter 才能繼續。 +\n如果您的設備已經有工作配置文件,無論是之前安裝的Shelter所創建或者其他應用程序創建,您都必須在設置 -> 帳戶中刪除該配置文件,然後 Shelter 才能繼續。 \n -\n否則,如果您沒有手動取消設置,那麼失敗的原因最常見的原因是系統進行了大量修改,或者 Shelter 與其他工作配置文件管理器之間存在衝突。 不幸的是,我們對此無能為力。 +\n如果您沒有手動取消設置,那麼失敗的最常見原因是系統被大量修改,或者 Shelter 與其他工作配置文件管理器之間存在衝突。 不幸的是,我們對此無能爲力。 \n -\n點擊“下一步”退出。 - 需要你的輸入 +\n單擊下一步退出。 + 需要採取的行動 \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 4cb9323..bb5257b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,6 +4,8 @@ #009688 #FFC107 #E0F2F1 + @color/colorAccent + @color/colorTextPrimary #333333 #999999 #E0F2F1 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a749c88..0f364d7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,7 +5,7 @@ Shelter App Isolation Service Shelter needs to become Device Admin in order to perform its isolation tasks. - Choose an Image File + Payment Service Stub (DO NOT USE) Welcome to Shelter @@ -51,6 +51,7 @@ Unfreeze and Launch Auto Freeze Allow Widgets in Main Profile + Allow Cross-Profile Interaction Search @@ -68,10 +69,10 @@ Interaction File Shuttle When enabled, you\'ll be able to browse / view / pick / copy files in Shelter from main profile and vice-versa, ONLY through Documents UI (named Files or Documents on your launcher) or apps with Documents UI support (they only gain temporary access to files you choose in Documents UI), while still pertaining the filesystem isolation. - Image Chooser as Fake Camera - Present a fake camera app to other apps, allowing you to choose an arbitrary image from Documents UI (and File Shuttle if enabled) as the taken picture. This enables File Shuttle for any app that supports invoking other camera apps to take a picture, even if they don\'t support Documents UI natively. Block Contacts Searching Deny access from main profile to contacts inside work profile. + Payment Service Stub + Enable a fake NFC payment service in the main profile, so that the "contactless payments" option under Settings - NFC becomes enabled to allow you to choose a payment app inside the work profile. This works around an Android bug that makes it impossible to select a payment app inside the work profile if none is available in the main profile. Services Auto Freeze Service When the screen is locked, automatically freeze apps launched from \"Unfreeze & Launch Shortcut\". @@ -113,4 +114,7 @@ Cloning non-system apps to another profile is currently not possible on MIUI. Please clone your system\'s app store (e.g. Play Store) into the other profile and then install apps from there. Continue anyway + + + %d min diff --git a/app/src/main/res/xml/payment_stub.xml b/app/src/main/res/xml/payment_stub.xml new file mode 100644 index 0000000..a6ac793 --- /dev/null +++ b/app/src/main/res/xml/payment_stub.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/preferences_settings.xml b/app/src/main/res/xml/preferences_settings.xml index 3365308..5a92094 100644 --- a/app/src/main/res/xml/preferences_settings.xml +++ b/app/src/main/res/xml/preferences_settings.xml @@ -10,16 +10,16 @@ android:title="@string/settings_cross_profile_file_chooser" android:summary="@string/settings_cross_profile_file_chooser_desc" /> - - + + - diff --git a/art/egg_f_monochrome.svg b/art/egg_f_monochrome.svg new file mode 100644 index 0000000..a6e25e6 --- /dev/null +++ b/art/egg_f_monochrome.svg @@ -0,0 +1,69 @@ + + + + + + + egg_f + + + + + + + + diff --git a/build.gradle b/build.gradle index 53e995e..62391f6 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' + classpath 'com.android.tools.build:gradle:8.6.0' // NOTE: Do not place your application dependencies here; they belong diff --git a/fdroid_custom_repo.png b/fdroid_custom_repo.png new file mode 100644 index 0000000..bdd6ba1 Binary files /dev/null and b/fdroid_custom_repo.png differ diff --git a/gradle.properties b/gradle.properties index 8de5058..a8c5700 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,10 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.defaults.buildfeatures.buildconfig=true android.enableJetifier=true +android.nonFinalResIds=false +android.nonTransitiveRClass=false android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 939eba6..b753a83 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip diff --git a/libs/SetupWizardLibrary b/libs/SetupWizardLibrary index 15dce31..ae5ee4b 160000 --- a/libs/SetupWizardLibrary +++ b/libs/SetupWizardLibrary @@ -1 +1 @@ -Subproject commit 15dce316a229f6ab9b1d6d112bca7a10564336e2 +Subproject commit ae5ee4b4a0fb380c99e05f53b753cc86b212f1dd