Merge branch 'more-crash-fixes' into 'master'

More crash fixes

Closes #1332

See merge request fdroid/fdroidclient!651
This commit is contained in:
Hans-Christoph Steiner 2018-03-07 22:08:51 +00:00
commit a7ebb7827a
48 changed files with 125 additions and 158 deletions

View File

@ -7,6 +7,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@ -36,7 +37,6 @@ import java.util.Map;
* and {@code versionCode} since there could be different copies of the same * and {@code versionCode} since there could be different copies of the same
* APK on different servers, signed by different keys, or even different builds. * APK on different servers, signed by different keys, or even different builds.
*/ */
@SuppressWarnings("LineLength")
public final class AppUpdateStatusManager { public final class AppUpdateStatusManager {
private static final String TAG = "AppUpdateStatusManager"; private static final String TAG = "AppUpdateStatusManager";
@ -132,7 +132,7 @@ public final class AppUpdateStatusManager {
*/ */
public String toString() { public String toString() {
return app.packageName + " [Status: " + status return app.packageName + " [Status: " + status
+ ", Progress: " + progressCurrent + " / " + progressMax + "]"; + ", Progress: " + progressCurrent + " / " + progressMax + ']';
} }
protected AppUpdateStatus(Parcel in) { protected AppUpdateStatus(Parcel in) {
@ -257,20 +257,14 @@ public final class AppUpdateStatusManager {
boolean isStatusUpdate = entry.status != status; boolean isStatusUpdate = entry.status != status;
entry.status = status; entry.status = status;
entry.intent = intent; entry.intent = intent;
// If intent not set, see if we need to create a default intent setEntryContentIntentIfEmpty(entry);
if (entry.intent == null) {
entry.intent = getContentIntent(entry);
}
notifyChange(entry, isStatusUpdate); notifyChange(entry, isStatusUpdate);
} }
private void addApkInternal(@NonNull Apk apk, @NonNull Status status, PendingIntent intent) { private void addApkInternal(@NonNull Apk apk, @NonNull Status status, PendingIntent intent) {
Utils.debugLog(LOGTAG, "Add APK " + apk.apkName + " with state " + status.name()); Utils.debugLog(LOGTAG, "Add APK " + apk.apkName + " with state " + status.name());
AppUpdateStatus entry = createAppEntry(apk, status, intent); AppUpdateStatus entry = createAppEntry(apk, status, intent);
// If intent not set, see if we need to create a default intent setEntryContentIntentIfEmpty(entry);
if (entry.intent == null) {
entry.intent = getContentIntent(entry);
}
appMapping.put(entry.getUniqueKey(), entry); appMapping.put(entry.getUniqueKey(), entry);
notifyAdd(entry); notifyAdd(entry);
} }
@ -453,6 +447,7 @@ public final class AppUpdateStatusManager {
} }
} }
@SuppressWarnings("LineLength")
void clearAllUpdates() { void clearAllUpdates() {
synchronized (appMapping) { synchronized (appMapping) {
for (Iterator<Map.Entry<String, AppUpdateStatus>> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad for (Iterator<Map.Entry<String, AppUpdateStatus>> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad
@ -465,6 +460,7 @@ public final class AppUpdateStatusManager {
} }
} }
@SuppressWarnings("LineLength")
void clearAllInstalled() { void clearAllInstalled() {
synchronized (appMapping) { synchronized (appMapping) {
for (Iterator<Map.Entry<String, AppUpdateStatus>> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad for (Iterator<Map.Entry<String, AppUpdateStatus>> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad
@ -477,28 +473,46 @@ public final class AppUpdateStatusManager {
} }
} }
private PendingIntent getContentIntent(AppUpdateStatus entry) { /**
* If the {@link PendingIntent} aimed at {@link Notification.Builder#setContentIntent(PendingIntent)}
* is not set, then create a default one. The goal is to link the notification
* to the most relevant action, like the installer if the APK is downloaded, or the launcher once
* installed, if possible, or other relevant action. If there is no app launch
* {@code PendingIntent}, the app is probably not launchable, e.g. its a keyboard.
* If there is not an {@code PendingIntent} to install the app, this creates an {@code PendingIntent}
* to open up the app details page for the app. From there, the user can hit "install".
* <p>
* Before {@code android-11}, a {@code ContentIntent} was required in every
* {@link Notification}. This generates a boilerplate one for places where
* there isn't an obvious one.
*/
private void setEntryContentIntentIfEmpty(AppUpdateStatus entry) {
if (entry.intent != null) {
return;
}
switch (entry.status) { switch (entry.status) {
case UpdateAvailable: case UpdateAvailable:
case ReadyToInstall: case ReadyToInstall:
// Make sure we have an intent to install the app. If not set, we create an intent entry.intent = getAppDetailsIntent(entry.apk);
// to open up the app details page for the app. From there, the user can hit "install" break;
return getAppDetailsIntent(entry.apk);
case InstallError: case InstallError:
return getAppErrorIntent(entry); entry.intent = getAppErrorIntent(entry);
break;
case Installed: case Installed:
PackageManager pm = context.getPackageManager(); PackageManager pm = context.getPackageManager();
Intent intentObject = pm.getLaunchIntentForPackage(entry.app.packageName); Intent intentObject = pm.getLaunchIntentForPackage(entry.app.packageName);
if (intentObject != null) { if (intentObject != null) {
return PendingIntent.getActivity(context, 0, intentObject, 0); entry.intent = PendingIntent.getActivity(context, 0, intentObject, 0);
} else { } else {
// Could not get launch intent, maybe not launchable, e.g. a keyboard entry.intent = getAppDetailsIntent(entry.apk);
return getAppDetailsIntent(entry.apk);
} }
break;
}
if (Build.VERSION.SDK_INT < 11 && entry.intent == null) {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
entry.intent = PendingIntent.getActivity(context, 0, intent, 0);
} }
return null;
} }
/** /**

View File

@ -77,9 +77,12 @@ class NotificationHelper {
BroadcastReceiver receiverAppStatusChanges = new BroadcastReceiver() { BroadcastReceiver receiverAppStatusChanges = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent == null) {
return;
}
AppUpdateStatusManager.AppUpdateStatus entry; AppUpdateStatusManager.AppUpdateStatus entry;
String url; String url;
switch (intent.getAction()) { switch (intent.getAction()) {
case AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED: case AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED:
notificationManager.cancelAll(); notificationManager.cancelAll();
@ -434,11 +437,6 @@ class NotificationHelper {
PendingIntent piDeleted = PendingIntent.getBroadcast(context, 0, intentDeleted, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piDeleted = PendingIntent.getBroadcast(context, 0, intentDeleted, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setDeleteIntent(piDeleted); builder.setDeleteIntent(piDeleted);
if (Build.VERSION.SDK_INT < 11) {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
builder.setContentIntent(PendingIntent.getActivity(context, 0, intent, 0));
}
return builder.build(); return builder.build();
} }

View File

@ -4,9 +4,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.util.Base64; import android.util.Base64;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.data.RepoProvider;
@ -21,6 +19,7 @@ import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;
@ -36,7 +35,7 @@ public class Provisioner {
/** /**
* This is the name of the subfolder in the file directory of this app * This is the name of the subfolder in the file directory of this app
* where {@link Provisioner} looks for new provisions. * where {@link Provisioner} looks for new provisions.
* * <p>
* eg. in the Emulator (API level 24): /data/user/0/org.fdroid.fdroid.debug/files/provisions * eg. in the Emulator (API level 24): /data/user/0/org.fdroid.fdroid.debug/files/provisions
*/ */
private static final String NEW_PROVISIONS_DIR = "provisions"; private static final String NEW_PROVISIONS_DIR = "provisions";
@ -47,9 +46,12 @@ public class Provisioner {
/** /**
* search for provision files and process them * search for provision files and process them
*/ */
public static void scanAndProcess(Context context) { static void scanAndProcess(Context context) {
File externalFilesDir = context.getExternalFilesDir(null);
File provisionDir = new File(context.getExternalFilesDir(null).getAbsolutePath(), NEW_PROVISIONS_DIR); if (externalFilesDir == null) {
return;
}
File provisionDir = new File(externalFilesDir.getAbsolutePath(), NEW_PROVISIONS_DIR);
if (!provisionDir.isDirectory()) { if (!provisionDir.isDirectory()) {
Utils.debugLog(TAG, "Provisions dir does not exists: '" + provisionDir.getAbsolutePath() + "' moving on ..."); Utils.debugLog(TAG, "Provisions dir does not exists: '" + provisionDir.getAbsolutePath() + "' moving on ...");
@ -79,21 +81,24 @@ public class Provisioner {
Uri origUrl = Uri.parse(repo.getUrl()); Uri origUrl = Uri.parse(repo.getUrl());
Uri.Builder data = new Uri.Builder(); Uri.Builder data = new Uri.Builder();
data.scheme(origUrl.getScheme()); data.scheme(origUrl.getScheme());
data.encodedAuthority(Uri.encode(repo.getUsername()) + ":" + Uri.encode(repo.getPassword()) + "@" + Uri.encode(origUrl.getAuthority())); data.encodedAuthority(Uri.encode(repo.getUsername()) + ':'
+ Uri.encode(repo.getPassword()) + '@' + Uri.encode(origUrl.getAuthority()));
data.path(origUrl.getPath()); data.path(origUrl.getPath());
data.appendQueryParameter("fingerprint", repo.getSigfp()); data.appendQueryParameter("fingerprint", repo.getSigfp());
Intent i = new Intent(context, ManageReposActivity.class); Intent i = new Intent(context, ManageReposActivity.class);
i.setData(data.build()); i.setData(data.build());
context.startActivity(i); context.startActivity(i);
Utils.debugLog(TAG, "Provision processed: '" + provision.getProvisonPath() + "' prompted user ..."); Utils.debugLog(TAG, "Provision processed: '"
+ provision.getProvisonPath() + "' prompted user ...");
} }
} }
// remove provision file // remove provision file
try { try {
new File(provision.getProvisonPath()).delete(); if (new File(provision.getProvisonPath()).delete()) {
cleanupCounter++; cleanupCounter++;
}
} catch (SecurityException e) { } catch (SecurityException e) {
// ignore this exception // ignore this exception
Utils.debugLog(TAG, "Removing provision not possible: " + e.getMessage() + " ()"); Utils.debugLog(TAG, "Removing provision not possible: " + e.getMessage() + " ()");
@ -104,14 +109,18 @@ public class Provisioner {
} }
} }
public List<File> findProvisionFiles(Context context) { private List<File> findProvisionFiles(Context context) {
String provisionDirPath = context.getExternalFilesDir(null).getAbsolutePath() + File.separator + NEW_PROVISIONS_DIR; File externalFilesDir = context.getExternalFilesDir(null);
return findProvisionFilesInDir(new File(provisionDirPath)); if (externalFilesDir == null) {
return Collections.emptyList();
}
File provisionDir = new File(externalFilesDir.getAbsolutePath(), NEW_PROVISIONS_DIR);
return findProvisionFilesInDir(provisionDir);
} }
protected List<File> findProvisionFilesInDir(File file) { List<File> findProvisionFilesInDir(File file) {
if (file == null || !file.isDirectory()) { if (file == null || !file.isDirectory()) {
return new ArrayList<>(); return Collections.emptyList();
} }
try { try {
File[] files = file.listFiles(new FilenameFilter() { File[] files = file.listFiles(new FilenameFilter() {
@ -145,7 +154,7 @@ public class Provisioner {
return sb.toString(); return sb.toString();
} }
protected String deobfuscate(String obfuscated) { String deobfuscate(String obfuscated) {
try { try {
return new String(Base64.decode(rot13(obfuscated), Base64.DEFAULT), "UTF-8"); return new String(Base64.decode(rot13(obfuscated), Base64.DEFAULT), "UTF-8");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
@ -154,7 +163,7 @@ public class Provisioner {
} }
} }
protected List<ProvisionPlaintext> extractProvisionsPlaintext(List<File> files) { List<ProvisionPlaintext> extractProvisionsPlaintext(List<File> files) {
List<ProvisionPlaintext> result = new ArrayList<>(); List<ProvisionPlaintext> result = new ArrayList<>();
if (files != null) { if (files != null) {
for (File file : files) { for (File file : files) {
@ -163,7 +172,7 @@ public class Provisioner {
ZipInputStream in = null; ZipInputStream in = null;
try { try {
in = new ZipInputStream(new FileInputStream(file)); in = new ZipInputStream(new FileInputStream(file));
ZipEntry zipEntry = null; ZipEntry zipEntry;
while ((zipEntry = in.getNextEntry()) != null) { while ((zipEntry = in.getNextEntry()) != null) {
String name = zipEntry.getName(); String name = zipEntry.getName();
if ("repo_provision.json".equals(name)) { if ("repo_provision.json".equals(name)) {
@ -194,7 +203,7 @@ public class Provisioner {
return result; return result;
} }
public List<Provision> parseProvisions(List<ProvisionPlaintext> provisionPlaintexts) { List<Provision> parseProvisions(List<ProvisionPlaintext> provisionPlaintexts) {
List<Provision> provisions = new ArrayList<>(); List<Provision> provisions = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
@ -216,44 +225,44 @@ public class Provisioner {
return provisions; return provisions;
} }
public static class ProvisionPlaintext { static class ProvisionPlaintext {
private String provisionPath; private String provisionPath;
private String repositoryProvision; private String repositoryProvision;
public String getProvisionPath() { String getProvisionPath() {
return provisionPath; return provisionPath;
} }
public void setProvisionPath(String provisionPath) { void setProvisionPath(String provisionPath) {
this.provisionPath = provisionPath; this.provisionPath = provisionPath;
} }
public String getRepositoryProvision() { String getRepositoryProvision() {
return repositoryProvision; return repositoryProvision;
} }
public void setRepositoryProvision(String repositoryProvision) { void setRepositoryProvision(String repositoryProvision) {
this.repositoryProvision = repositoryProvision; this.repositoryProvision = repositoryProvision;
} }
} }
public static class Provision { static class Provision {
private String provisonPath; private String provisonPath;
private RepositoryProvision repositoryProvision; private RepositoryProvision repositoryProvision;
public String getProvisonPath() { String getProvisonPath() {
return provisonPath; return provisonPath;
} }
public void setProvisonPath(String provisonPath) { void setProvisonPath(String provisonPath) {
this.provisonPath = provisonPath; this.provisonPath = provisonPath;
} }
public RepositoryProvision getRepositoryProvision() { RepositoryProvision getRepositoryProvision() {
return repositoryProvision; return repositoryProvision;
} }
public void setRepositoryProvision(RepositoryProvision repositoryProvision) { void setRepositoryProvision(RepositoryProvision repositoryProvision) {
this.repositoryProvision = repositoryProvision; this.repositoryProvision = repositoryProvision;
} }
} }

View File

@ -38,12 +38,10 @@ import android.text.style.TypefaceSpan;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.utils.StorageUtils; import com.nostra13.universalimageloader.utils.StorageUtils;
import org.fdroid.fdroid.compat.FileCompat; import org.fdroid.fdroid.compat.FileCompat;
import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.SanitizedFile; import org.fdroid.fdroid.data.SanitizedFile;
@ -91,7 +89,7 @@ public final class Utils {
new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.ENGLISH); new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss", Locale.ENGLISH);
private static final String[] FRIENDLY_SIZE_FORMAT = { private static final String[] FRIENDLY_SIZE_FORMAT = {
"%.0f B", "%.0f KiB", "%.1f MiB", "%.2f GiB", "%.0f B", "%.0f KiB", "%.1f MiB", "%.2f GiB",
}; };
public static final String FALLBACK_ICONS_DIR = "/icons/"; public static final String FALLBACK_ICONS_DIR = "/icons/";
@ -205,31 +203,31 @@ public final class Utils {
} }
private static final String[] ANDROID_VERSION_NAMES = { private static final String[] ANDROID_VERSION_NAMES = {
"?", // 0, undefined "?", // 0, undefined
"1.0", // 1 "1.0", // 1
"1.1", // 2 "1.1", // 2
"1.5", // 3 "1.5", // 3
"1.6", // 4 "1.6", // 4
"2.0", // 5 "2.0", // 5
"2.0.1", // 6 "2.0.1", // 6
"2.1", // 7 "2.1", // 7
"2.2", // 8 "2.2", // 8
"2.3", // 9 "2.3", // 9
"2.3.3", // 10 "2.3.3", // 10
"3.0", // 11 "3.0", // 11
"3.1", // 12 "3.1", // 12
"3.2", // 13 "3.2", // 13
"4.0", // 14 "4.0", // 14
"4.0.3", // 15 "4.0.3", // 15
"4.1", // 16 "4.1", // 16
"4.2", // 17 "4.2", // 17
"4.3", // 18 "4.3", // 18
"4.4", // 19 "4.4", // 19
"4.4W", // 20 "4.4W", // 20
"5.0", // 21 "5.0", // 21
"5.1", // 22 "5.1", // 22
"6.0", // 23 "6.0", // 23
"7.0", // 24 "7.0", // 24
}; };
public static String getAndroidVersionName(int sdkLevel) { public static String getAndroidVersionName(int sdkLevel) {
@ -400,7 +398,16 @@ public final class Utils {
/** /**
* Get the checksum hash of the file {@code apk} using the algorithm in {@code algo}. * Get the checksum hash of the file {@code apk} using the algorithm in {@code algo}.
* {@code apk} must exist on the filesystem and {@code algo} must be supported * {@code apk} must exist on the filesystem and {@code algo} must be supported
* by this device, otherwise an {@link IllegalArgumentException} is thrown. * by this device, otherwise an {@link IllegalArgumentException} is thrown. This
* method must be very defensive about checking whether the file exists, since APKs
* can be uninstalled/deleted in background at any time, even if this is in the
* middle of running.
* <p>
* This also will run into filesystem corruption if the device is having trouble.
* So hide those so F-Droid does not pop up crash reports about that. As such this
* exception-message-parsing-and-throwing-a-new-ignorable-exception-hackery is
* probably warranted. See https://www.gitlab.com/fdroid/fdroidclient/issues/855
* for more detail.
*/ */
public static String getBinaryHash(File apk, String algo) { public static String getBinaryHash(File apk, String algo) {
FileInputStream fis = null; FileInputStream fis = null;
@ -418,14 +425,12 @@ public final class Utils {
byte[] mdbytes = md.digest(); byte[] mdbytes = md.digest();
return toHexString(mdbytes).toLowerCase(Locale.ENGLISH); return toHexString(mdbytes).toLowerCase(Locale.ENGLISH);
} catch (IOException e) { } catch (IOException e) {
// The annoyance (potentially) caused by miscellaneous filesystem corruption results in String message = e.getMessage();
// F-Droid constantly popping up crash reports when F-Droid isn't even open. As such this if (message.contains("read failed: EIO (I/O error)")) {
// exception-message-parsing-and-throwing-a-new-ignorable-exception-hackery is probably Utils.debugLog(TAG, "potential filesystem corruption while accessing " + apk + ": " + message);
// warranted. See https://www.gitlab.com/fdroid/fdroidclient/issues/855 for more detail. } else if (message.contains(" ENOENT ")) {
if (e.getMessage().contains("read failed: EIO (I/O error)")) { Utils.debugLog(TAG, apk + " vanished: " + message);
throw new PotentialFilesystemCorruptionException(e);
} }
throw new IllegalArgumentException(e); throw new IllegalArgumentException(e);
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
throw new IllegalArgumentException(e); throw new IllegalArgumentException(e);
@ -434,12 +439,6 @@ public final class Utils {
} }
} }
public static class PotentialFilesystemCorruptionException extends IllegalArgumentException {
public PotentialFilesystemCorruptionException(IOException e) {
super(e);
}
}
/** /**
* Computes the base 16 representation of the byte array argument. * Computes the base 16 representation of the byte array argument.
* *
@ -537,10 +536,10 @@ public final class Utils {
public static String formatLastUpdated(@NonNull Resources res, @NonNull Date date) { public static String formatLastUpdated(@NonNull Resources res, @NonNull Date date) {
long msDiff = Calendar.getInstance().getTimeInMillis() - date.getTime(); long msDiff = Calendar.getInstance().getTimeInMillis() - date.getTime();
long days = msDiff / DateUtils.DAY_IN_MILLIS; long days = msDiff / DateUtils.DAY_IN_MILLIS;
long weeks = msDiff / (DateUtils.DAY_IN_MILLIS * 7); long weeks = msDiff / (DateUtils.DAY_IN_MILLIS * 7);
long months = msDiff / (DateUtils.DAY_IN_MILLIS * 30); long months = msDiff / (DateUtils.DAY_IN_MILLIS * 30);
long years = msDiff / (DateUtils.DAY_IN_MILLIS * 365); long years = msDiff / (DateUtils.DAY_IN_MILLIS * 365);
if (days < 1) { if (days < 1) {
return res.getString(R.string.details_last_updated_today); return res.getString(R.string.details_last_updated_today);

View File

@ -11,11 +11,9 @@ import android.net.Uri;
import android.os.Process; import android.os.Process;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import org.acra.ACRA; import org.acra.ACRA;
import org.fdroid.fdroid.AppUpdateStatusManager; import org.fdroid.fdroid.AppUpdateStatusManager;
import org.fdroid.fdroid.Hasher; import org.fdroid.fdroid.Hasher;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.Schema.InstalledAppTable; import org.fdroid.fdroid.data.Schema.InstalledAppTable;
import rx.functions.Action1; import rx.functions.Action1;
@ -249,15 +247,6 @@ public class InstalledAppProviderService extends IntentService {
} }
insertAppIntoDb(this, packageInfo, hashType, hash); insertAppIntoDb(this, packageInfo, hashType, hash);
} catch (Utils.PotentialFilesystemCorruptionException e) {
String msg = getString(R.string.installed_app__file_corrupt, apk.getAbsolutePath());
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
Log.e(TAG, "Encountered potential filesystem corruption, or other unknown " +
"problem when calculating hash of " + apk.getAbsolutePath() + ". " +
"It is unlikely F-Droid can do anything about this, and this " +
"likely happened in the background. As such, we will continue without " +
"interrupting the user by asking them to send a crash report.");
return;
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
Utils.debugLog(TAG, e.getMessage()); Utils.debugLog(TAG, e.getMessage());
ACRA.getErrorReporter().handleException(e, false); ACRA.getErrorReporter().handleException(e, false);

View File

@ -63,7 +63,6 @@ import java.util.Set;
* TODO: If a user downloads an old version of an app (resulting in a new update being available * TODO: If a user downloads an old version of an app (resulting in a new update being available
* instantly), then we need to refresh the list of apps to update. * instantly), then we need to refresh the list of apps to update.
*/ */
@SuppressWarnings("LineLength")
public class UpdatesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> public class UpdatesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
implements LoaderManager.LoaderCallbacks<Cursor> { implements LoaderManager.LoaderCallbacks<Cursor> {
@ -170,9 +169,7 @@ public class UpdatesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
} }
} }
for (KnownVulnApp app : knownVulnApps) { items.addAll(knownVulnApps);
items.add(app);
}
} }
@Override @Override
@ -329,6 +326,9 @@ public class UpdatesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
private final BroadcastReceiver receiverAppStatusChanges = new BroadcastReceiver() { private final BroadcastReceiver receiverAppStatusChanges = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (intent == null) {
return;
}
switch (intent.getAction()) { switch (intent.getAction()) {
case AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED: case AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED:
onManyAppStatusesChanged(intent.getStringExtra(AppUpdateStatusManager.EXTRA_REASON_FOR_CHANGE)); onManyAppStatusesChanged(intent.getStringExtra(AppUpdateStatusManager.EXTRA_REASON_FOR_CHANGE));

View File

@ -467,7 +467,6 @@
<string name="app_list__dismiss_app_update">التحديث تم تخطيه</string> <string name="app_list__dismiss_app_update">التحديث تم تخطيه</string>
<string name="app_list__dismiss_vulnerable_app">تخطي الحساسية</string> <string name="app_list__dismiss_vulnerable_app">تخطي الحساسية</string>
<string name="installed_app__file_corrupt">أف-درويد تلقي خطأ EIO:ربما %s تالف!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">لقد وجدنا ثغرة في %1$s. نحن نوصي بإلغاء تثبيت هذا التطبيق في الحال.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">لقد وجدنا ثغرة في %1$s. نحن نوصي بإلغاء تثبيت هذا التطبيق في الحال.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">لقد وجدنا ثغرة في %1$s. نحن نوصي بالتحديث إلي أحدث إصدار في الحال.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">لقد وجدنا ثغرة في %1$s. نحن نوصي بالتحديث إلي أحدث إصدار في الحال.</string>
<string name="latest__empty_state__never_updated">حينما يتم تحديث قائمة التطبيقات، التطبيقات الأخيرة سوف تظهر هنا</string> <string name="latest__empty_state__never_updated">حينما يتم تحديث قائمة التطبيقات، التطبيقات الأخيرة سوف تظهر هنا</string>

View File

@ -509,7 +509,6 @@
<string name="app_list__dismiss_vulnerable_app">Inseguridá inorada</string> <string name="app_list__dismiss_vulnerable_app">Inseguridá inorada</string>
<string name="app_list__dismiss_downloading_app">Descarga encaboxada</string> <string name="app_list__dismiss_downloading_app">Descarga encaboxada</string>
<string name="installed_app__file_corrupt">F-Droid recibió un error EIO: ¡probablemente %s ta corrompíu!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Alcontramos una inseguridá con %1$s. Recomendamos desinstalar esta app nel intre.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Alcontramos una inseguridá con %1$s. Recomendamos desinstalar esta app nel intre.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Alcontramos una inseguridá con %1$s. Recomendamos actualizar a la versión más nueva nel intre.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Alcontramos una inseguridá con %1$s. Recomendamos actualizar a la versión más nueva nel intre.</string>
<string name="updates__app_with_known_vulnerability__ignore">Inorar</string> <string name="updates__app_with_known_vulnerability__ignore">Inorar</string>

View File

@ -545,7 +545,6 @@
<string name="empty_search_available_app_list">Няма супадзенняў сярод даступных праграм.</string> <string name="empty_search_available_app_list">Няма супадзенняў сярод даступных праграм.</string>
<string name="installed_app__file_corrupt">F-Droid атрымаў EIO-памылку: %s верагодна пашкоджаны!</string>
<string name="app_list__dismiss_app_update">Абнаўленне ігнаруецца</string> <string name="app_list__dismiss_app_update">Абнаўленне ігнаруецца</string>
<string name="app_list__dismiss_vulnerable_app">Уразлівасць ігнаруецца</string> <string name="app_list__dismiss_vulnerable_app">Уразлівасць ігнаруецца</string>
<string name="app_list__dismiss_downloading_app">Спампоўка адмененая</string> <string name="app_list__dismiss_downloading_app">Спампоўка адмененая</string>

View File

@ -498,7 +498,6 @@
<string name="app_list_download_ready">Изтeглено и готово за инсталиране</string> <string name="app_list_download_ready">Изтeглено и готово за инсталиране</string>
<string name="app_list__dismiss_downloading_app">Спряно изтегляне</string> <string name="app_list__dismiss_downloading_app">Спряно изтегляне</string>
<string name="installed_app__file_corrupt">Входно-изходна грешка. %s вероятно е повреден!</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Открита е уязвимост в %1$s. Препоръчва се незабавно обновяване до най-новата версия.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Открита е уязвимост в %1$s. Препоръчва се незабавно обновяване до най-новата версия.</string>
<string name="privacy">Лични данни</string> <string name="privacy">Лични данни</string>
<string name="preventScreenshots_title">Без снимки на екрана</string> <string name="preventScreenshots_title">Без снимки на екрана</string>

View File

@ -466,7 +466,6 @@
<string name="app_list__dismiss_vulnerable_app">ཡ་ལན་མ་བྱས་པའི་ཉེན་ཁ།</string> <string name="app_list__dismiss_vulnerable_app">ཡ་ལན་མ་བྱས་པའི་ཉེན་ཁ།</string>
<string name="app_list__dismiss_downloading_app">ཕབ་ལེན་བརྩི་མེད།</string> <string name="app_list__dismiss_downloading_app">ཕབ་ལེན་བརྩི་མེད།</string>
<string name="installed_app__file_corrupt">ཨེཕ་རོཌ་ལ་EIO ནོར་སྐྱོན་འདུག :%s ཕལ་ཆེར་སྐྱོན་ཤོར་ཡོད་ས་རེད།</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">ང་ཚོས་ %1$s འདི་དང་མཉམ་དུ་ཉེན་ཁ་འབྱུང་ཉེ་བ་རྙེད་སོང་། མཉེན་ཆས་འདི་ལམ་སེང་ཕྱིར་དབྱུང་བྱེད་རྒྱུའི་རེ་བ་ཞུ་གི་ཡོད།</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">ང་ཚོས་ %1$s འདི་དང་མཉམ་དུ་ཉེན་ཁ་འབྱུང་ཉེ་བ་རྙེད་སོང་། མཉེན་ཆས་འདི་ལམ་སེང་ཕྱིར་དབྱུང་བྱེད་རྒྱུའི་རེ་བ་ཞུ་གི་ཡོད།</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">ང་ཚོས་ %1$s འདི་དང་མཉམ་དུ་ཉེན་ཁ་འབྱུང་ཉེ་བ་རྙེད་སོང་། ཁྱེད་རང་གིས་གང་མགྱོགས་ཐོན་རིམ་གསར་ཤོས་འདི་ལ་གསར་བསྒྱུར་བྱེད་རྒྱུའི་རེ་བ་འདོན་རྒྱུ་ཡིན།</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">ང་ཚོས་ %1$s འདི་དང་མཉམ་དུ་ཉེན་ཁ་འབྱུང་ཉེ་བ་རྙེད་སོང་། ཁྱེད་རང་གིས་གང་མགྱོགས་ཐོན་རིམ་གསར་ཤོས་འདི་ལ་གསར་བསྒྱུར་བྱེད་རྒྱུའི་རེ་བ་འདོན་རྒྱུ་ཡིན།</string>
<string name="updates__app_with_known_vulnerability__ignore">ཡ་ལན་མ་བྱས་པ།</string> <string name="updates__app_with_known_vulnerability__ignore">ཡ་ལན་མ་བྱས་པ།</string>

View File

@ -490,7 +490,6 @@
<string name="app_list__dismiss_vulnerable_app">Vulnerabilitat ignorada</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilitat ignorada</string>
<string name="app_list__dismiss_downloading_app">Baixada cancel·lada</string> <string name="app_list__dismiss_downloading_app">Baixada cancel·lada</string>
<string name="installed_app__file_corrupt">Error EIO rebut a l\'F-Droid: %s probablement és corrupte!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">S\'ha trobat una vulnerabilitat a %1$s. Us recomanem suprimir aquesta aplicació immediatament.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">S\'ha trobat una vulnerabilitat a %1$s. Us recomanem suprimir aquesta aplicació immediatament.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">S\'ha trobat una vulnerabilitat a %1$s. Us recomanem actualitzar immediatament a la versió més recent.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">S\'ha trobat una vulnerabilitat a %1$s. Us recomanem actualitzar immediatament a la versió més recent.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignora</string> <string name="updates__app_with_known_vulnerability__ignore">Ignora</string>

View File

@ -445,7 +445,6 @@
<string name="app_list__dismiss_vulnerable_app">Zranitelnost ignorována</string> <string name="app_list__dismiss_vulnerable_app">Zranitelnost ignorována</string>
<string name="app_list__dismiss_downloading_app">Stahování zrušeno</string> <string name="app_list__dismiss_downloading_app">Stahování zrušeno</string>
<string name="installed_app__file_corrupt">F-Droid obdržel EIO chybu: %s je pravděpodobně poškozené!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">V %1$s byla nalezena zranitelnost. Doporučujeme tuto aplikaci okamžitě odinstalovat.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">V %1$s byla nalezena zranitelnost. Doporučujeme tuto aplikaci okamžitě odinstalovat.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">V %1$s byla nalezena zranitelnost. Doporučujeme tuto aplikaci aktualizovat na nejnovější verzi.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">V %1$s byla nalezena zranitelnost. Doporučujeme tuto aplikaci aktualizovat na nejnovější verzi.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignorovat</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorovat</string>

View File

@ -497,7 +497,6 @@
<string name="app_list__dismiss_vulnerable_app">Sårbarhed ignoreret</string> <string name="app_list__dismiss_vulnerable_app">Sårbarhed ignoreret</string>
<string name="app_list__dismiss_downloading_app">Hentning annulleret</string> <string name="app_list__dismiss_downloading_app">Hentning annulleret</string>
<string name="installed_app__file_corrupt">F-Droid modtog EIO-fejl: %s er formentlig korrupt!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Vi har fundet en sårbarhed med %1$s. Vi anbefaler, at du afinstallerer denne app med det samme.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Vi har fundet en sårbarhed med %1$s. Vi anbefaler, at du afinstallerer denne app med det samme.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Vi har fundet en sårbarhed med %1$s. Vi anbefaler, at du opgraderer til den nyeste version med det samme.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Vi har fundet en sårbarhed med %1$s. Vi anbefaler, at du opgraderer til den nyeste version med det samme.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignorer</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorer</string>

View File

@ -510,7 +510,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Keine mit dem Gerät kompatiblen Versionen</string> <string name="app_details__no_versions__none_compatible_with_device">Keine mit dem Gerät kompatiblen Versionen</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Die installierte Version ist mit keiner der vorhandenen Versionen kompatibel. Eine Deinstallation der App ermöglicht Ihnen, kompatible Versionen anzusehen und zu installieren. Dies tritt häufig bei Apps auf, die über Google Play oder andere Quellen installiert wurden, da sie mit einem anderen Zertifikat signiert sind.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Die installierte Version ist mit keiner der vorhandenen Versionen kompatibel. Eine Deinstallation der App ermöglicht Ihnen, kompatible Versionen anzusehen und zu installieren. Dies tritt häufig bei Apps auf, die über Google Play oder andere Quellen installiert wurden, da sie mit einem anderen Zertifikat signiert sind.</string>
<string name="installed_app__file_corrupt">F-Droid empfing einen EIO-Fehler: Möglicherweise ist %s beschädigt!</string>
<string name="app_list__dismiss_app_update">Aktualisierung ignoriert</string> <string name="app_list__dismiss_app_update">Aktualisierung ignoriert</string>
<string name="app_list__dismiss_vulnerable_app">Sicherheitslücke ignoriert</string> <string name="app_list__dismiss_vulnerable_app">Sicherheitslücke ignoriert</string>
<string name="app_list__dismiss_downloading_app">Herunterladen abgebrochen</string> <string name="app_list__dismiss_downloading_app">Herunterladen abgebrochen</string>

View File

@ -461,7 +461,6 @@
<string name="app_list__dismiss_vulnerable_app">Η ευπάθεια αγνοήθηκε</string> <string name="app_list__dismiss_vulnerable_app">Η ευπάθεια αγνοήθηκε</string>
<string name="app_list__dismiss_downloading_app">Ακύρωση λήψης</string> <string name="app_list__dismiss_downloading_app">Ακύρωση λήψης</string>
<string name="installed_app__file_corrupt">Το F-Droid έχει ένα ΕΙΟ σφάλμα: Το %s είναι πιθανόν κατεστραμμένο!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Βρέθηκε ευπάθεια με %1$s. Συνίσταται να απεγκαταστήσετε αυτή την εφαρμογή αμέσως.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Βρέθηκε ευπάθεια με %1$s. Συνίσταται να απεγκαταστήσετε αυτή την εφαρμογή αμέσως.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Βρέθηκε ευπάθεια με %1$s. Συνίσταται να αναβαθμίσετε αυτή την εφαρμογή αμέσως στη νεότερη έκδοση.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Βρέθηκε ευπάθεια με %1$s. Συνίσταται να αναβαθμίσετε αυτή την εφαρμογή αμέσως στη νεότερη έκδοση.</string>
<string name="updates__app_with_known_vulnerability__ignore">Αγνοήστε</string> <string name="updates__app_with_known_vulnerability__ignore">Αγνοήστε</string>

View File

@ -494,7 +494,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Neniuj versioj kongruaj kun la aparato</string> <string name="app_details__no_versions__none_compatible_with_device">Neniuj versioj kongruaj kun la aparato</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La instalita versio ne kongruas kun ĉiuj disponeblaj versioj. Malinstalado de aplikaĵo ebligos al vi vidigi kaj instali kongruajn versiojn. Tio ĉi ofte okazas ĉe aplikaĵoj instalitaj el Google Play aŭ aliaj fontoj, se ili estas subskribitaj per alia atestilo.</string> <string name="app_details__no_versions__explain_incompatible_signatures">La instalita versio ne kongruas kun ĉiuj disponeblaj versioj. Malinstalado de aplikaĵo ebligos al vi vidigi kaj instali kongruajn versiojn. Tio ĉi ofte okazas ĉe aplikaĵoj instalitaj el Google Play aŭ aliaj fontoj, se ili estas subskribitaj per alia atestilo.</string>
<string name="installed_app__file_corrupt">F-Droid renkontis EIO-eraron: %s probable estas difektita!</string>
<string name="app_list__dismiss_app_update">Ĝisdatigo ignorata</string> <string name="app_list__dismiss_app_update">Ĝisdatigo ignorata</string>
<string name="app_list__dismiss_vulnerable_app">Sekurec-fliko ignorata</string> <string name="app_list__dismiss_vulnerable_app">Sekurec-fliko ignorata</string>
<string name="app_list__dismiss_downloading_app">Elŝuto nuligita</string> <string name="app_list__dismiss_downloading_app">Elŝuto nuligita</string>

View File

@ -512,7 +512,6 @@
<string name="app_details__no_versions__none_compatible_with_device">No hay versiones compatibles con el dispositivo</string> <string name="app_details__no_versions__none_compatible_with_device">No hay versiones compatibles con el dispositivo</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación te permitirá ver e instalar las versiones compatibles. Esto ocurre a menudo con aplicaciones instaladas a través de Google Play o de otras fuentes, si se han firmado con un certificado diferente.</string> <string name="app_details__no_versions__explain_incompatible_signatures">La versión instalada no es compatible con ninguna de las versiones disponibles. Desinstalar la aplicación te permitirá ver e instalar las versiones compatibles. Esto ocurre a menudo con aplicaciones instaladas a través de Google Play o de otras fuentes, si se han firmado con un certificado diferente.</string>
<string name="installed_app__file_corrupt">F-Droid recibió un error EIO: ¡probablemente %s está corrupto!</string>
<string name="app_list__dismiss_app_update">Actualización ignorada</string> <string name="app_list__dismiss_app_update">Actualización ignorada</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidad ignorada</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilidad ignorada</string>
<string name="app_list__dismiss_downloading_app">Descarga cancelada</string> <string name="app_list__dismiss_downloading_app">Descarga cancelada</string>

View File

@ -418,7 +418,6 @@
<string name="installed_apps__activity_title">Paigaldatud rakendused</string> <string name="installed_apps__activity_title">Paigaldatud rakendused</string>
<string name="installed_app__updates_ignored">Värskendusi ignoreeriti</string> <string name="installed_app__updates_ignored">Värskendusi ignoreeriti</string>
<string name="installed_app__updates_ignored_for_suggested_version">Versiooni %1$s värskendust ignoreeriti</string> <string name="installed_app__updates_ignored_for_suggested_version">Versiooni %1$s värskendust ignoreeriti</string>
<string name="installed_app__file_corrupt">F-Droid sai EIO vea: %s on ilmselt rikutud!</string>
<string name="updates__tts__download_updates_for_all_apps">Laadi alla kõik värskendused</string> <string name="updates__tts__download_updates_for_all_apps">Laadi alla kõik värskendused</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$s sees leiti haavatavus. Soovitatav on see rakendus koheselt eemaldada.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$s sees leiti haavatavus. Soovitatav on see rakendus koheselt eemaldada.</string>

View File

@ -531,7 +531,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Ez dago gailuarekin bateragarria den bertsiorik</string> <string name="app_details__no_versions__none_compatible_with_device">Ez dago gailuarekin bateragarria den bertsiorik</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Instalatutako bertsioa ez da bateragarria eskuragarri duden bertsioekin. Aplikazioa desinstalatzeak bertsio bateragarriak ikusi eta instalatzea ahalbidetuko dizu. Hau Gogle Play edo beste iturrietatik instalatutako aplikazioekin gertatu ohi da, ziurtagiri desberdin batekin sinatu direlako.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Instalatutako bertsioa ez da bateragarria eskuragarri duden bertsioekin. Aplikazioa desinstalatzeak bertsio bateragarriak ikusi eta instalatzea ahalbidetuko dizu. Hau Gogle Play edo beste iturrietatik instalatutako aplikazioekin gertatu ohi da, ziurtagiri desberdin batekin sinatu direlako.</string>
<string name="installed_app__file_corrupt">F-Droid-ek EIO errorea jaso du: %s hondatuta egon daiteke!</string>
<string name="app_list__dismiss_app_update">Eguneraketa ezikusia</string> <string name="app_list__dismiss_app_update">Eguneraketa ezikusia</string>
<string name="app_list__dismiss_vulnerable_app">Ahultasun ezikusia</string> <string name="app_list__dismiss_vulnerable_app">Ahultasun ezikusia</string>
<string name="app_list__dismiss_downloading_app">Deskarga utzita</string> <string name="app_list__dismiss_downloading_app">Deskarga utzita</string>

View File

@ -481,7 +481,6 @@
<string name="app_list__dismiss_vulnerable_app">آسیب‌پذیری نادیده گرفته شد</string> <string name="app_list__dismiss_vulnerable_app">آسیب‌پذیری نادیده گرفته شد</string>
<string name="app_list__dismiss_downloading_app">بارگیری لغو شد</string> <string name="app_list__dismiss_downloading_app">بارگیری لغو شد</string>
<string name="installed_app__file_corrupt">اف‌دروید خطای EIO گرفت: احتمالاً %s خراب است!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">یک آسیب‌پذیری در %1$s پیدا شد. توصیه می‌شود فوراً این کاره را حذف نصب کنید.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">یک آسیب‌پذیری در %1$s پیدا شد. توصیه می‌شود فوراً این کاره را حذف نصب کنید.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">یک آسیب‌پذیری در %1$s پیدا شد. توصیه می‌شود فوراً به جدیدترین نگارش ارتقا دهید.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">یک آسیب‌پذیری در %1$s پیدا شد. توصیه می‌شود فوراً به جدیدترین نگارش ارتقا دهید.</string>
<string name="updates__app_with_known_vulnerability__ignore">نادیده گرفتن</string> <string name="updates__app_with_known_vulnerability__ignore">نادیده گرفتن</string>

View File

@ -515,7 +515,6 @@
<string name="app_details__no_versions__no_compatible_signatures">Aucune version ne possède une signature compatible</string> <string name="app_details__no_versions__no_compatible_signatures">Aucune version ne possède une signature compatible</string>
<string name="app_details__no_versions__explain_incompatible_signatures">La version installée n\'est compatible avec aucune des versions disponibles. Désinstaller cette application vous permettra de consulter et installer les versions compatibles. Ce problème est fréquent avec les applications installées depuis Google Play ou d\'autres sources, si elles sont signées à l\'aide d\'un certificat différent.</string> <string name="app_details__no_versions__explain_incompatible_signatures">La version installée n\'est compatible avec aucune des versions disponibles. Désinstaller cette application vous permettra de consulter et installer les versions compatibles. Ce problème est fréquent avec les applications installées depuis Google Play ou d\'autres sources, si elles sont signées à l\'aide d\'un certificat différent.</string>
<string name="installed_app__file_corrupt">F-Droid a reçu une erreur EIO : %s est probablement corrompu !</string>
<string name="app_list__dismiss_app_update">Mise à jour ignorée</string> <string name="app_list__dismiss_app_update">Mise à jour ignorée</string>
<string name="app_list__dismiss_vulnerable_app">Vulnérabilité ignorée</string> <string name="app_list__dismiss_vulnerable_app">Vulnérabilité ignorée</string>
<string name="app_list__dismiss_downloading_app">Téléchargement annulé</string> <string name="app_list__dismiss_downloading_app">Téléchargement annulé</string>

View File

@ -386,7 +386,6 @@
<string name="installed_apps__activity_title">Aplicacións instaladas</string> <string name="installed_apps__activity_title">Aplicacións instaladas</string>
<string name="installed_app__updates_ignored">Anovacións ignoradas</string> <string name="installed_app__updates_ignored">Anovacións ignoradas</string>
<string name="installed_app__updates_ignored_for_suggested_version">Anovacións ignoradas para a versión %1$s</string> <string name="installed_app__updates_ignored_for_suggested_version">Anovacións ignoradas para a versión %1$s</string>
<string name="installed_app__file_corrupt">F-Droid recibiu un erro EIO: ¡probablemente %s está corrupto!</string>
<string name="updates__tts__download_updates_for_all_apps">Descargar todas as anovacións</string> <string name="updates__tts__download_updates_for_all_apps">Descargar todas as anovacións</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Atopamos unha vulnerabilidade en %1$s. Recomendamos desinstalar esta app inmediatamente.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Atopamos unha vulnerabilidade en %1$s. Recomendamos desinstalar esta app inmediatamente.</string>

View File

@ -502,7 +502,6 @@
<string name="app_details__no_versions__none_compatible_with_device">אין גרסאות תואמות להתקן זה</string> <string name="app_details__no_versions__none_compatible_with_device">אין גרסאות תואמות להתקן זה</string>
<string name="app_details__no_versions__explain_incompatible_signatures">הגרסה המותקנת אינה תואמת לכל הגרסאות הנתמכות. הסרת היישומון תאפשר לך לצפות ולהתקין גרסאות תואמות. מצב זה קורה לרוב עם יישומונים שמותקנים דרך Google Play או מקורות אחרים, אם היישומונים נחתמו עם אישור אחר.</string> <string name="app_details__no_versions__explain_incompatible_signatures">הגרסה המותקנת אינה תואמת לכל הגרסאות הנתמכות. הסרת היישומון תאפשר לך לצפות ולהתקין גרסאות תואמות. מצב זה קורה לרוב עם יישומונים שמותקנים דרך Google Play או מקורות אחרים, אם היישומונים נחתמו עם אישור אחר.</string>
<string name="installed_app__file_corrupt">התקבלה שגיאת קלט/פלט ב־F-Droid: כנראה כי קיימת תקלה מול %s!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">מצאנו חולשה אצל %1$s. אנו ממליצים להסיר את היישומון הזה מיידית.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">מצאנו חולשה אצל %1$s. אנו ממליצים להסיר את היישומון הזה מיידית.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">מצאנו חולשה אצל %1$s. אנו ממליצים לשדרג את היישומון הזה לגרסה החדשה ביותר מיידית.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">מצאנו חולשה אצל %1$s. אנו ממליצים לשדרג את היישומון הזה לגרסה החדשה ביותר מיידית.</string>
<string name="updates__app_with_known_vulnerability__ignore">התעלמות</string> <string name="updates__app_with_known_vulnerability__ignore">התעלמות</string>

View File

@ -447,7 +447,6 @@
<item quantity="other">%1$d éve frissítve</item> <item quantity="other">%1$d éve frissítve</item>
</plurals> </plurals>
<string name="app_installed_media">A fájl telepítve ide: %s</string> <string name="app_installed_media">A fájl telepítve ide: %s</string>
<string name="installed_app__file_corrupt">Az F-Droid EIO hibát kapott: a(z) %s valószínűleg sérült!</string>
<string name="status_inserting_x_apps">Alkalmazás részleteinek mentése (%1$d / %2$d), forrás: %3$s</string> <string name="status_inserting_x_apps">Alkalmazás részleteinek mentése (%1$d / %2$d), forrás: %3$s</string>
<plurals name="button_view_all_apps_in_category"> <plurals name="button_view_all_apps_in_category">
<item quantity="one">%d megtekintése</item> <item quantity="one">%d megtekintése</item>

View File

@ -498,7 +498,6 @@
<string name="app_list__dismiss_app_update">Pembaruan diabaikan</string> <string name="app_list__dismiss_app_update">Pembaruan diabaikan</string>
<string name="app_list__dismiss_downloading_app">Unduhan dibatalkan</string> <string name="app_list__dismiss_downloading_app">Unduhan dibatalkan</string>
<string name="installed_app__file_corrupt">F-Droid menerima galat EIO: %s mungkin rusak!</string>
<string name="updates__app_with_known_vulnerability__ignore">Abaikan</string> <string name="updates__app_with_known_vulnerability__ignore">Abaikan</string>
<string name="app_details__incompatible_mismatched_signature">Tanda tangan berbeda dari versi terpasang</string> <string name="app_details__incompatible_mismatched_signature">Tanda tangan berbeda dari versi terpasang</string>

View File

@ -549,7 +549,6 @@
<string name="app_list__dismiss_vulnerable_app">Öryggisgalli hunsaður</string> <string name="app_list__dismiss_vulnerable_app">Öryggisgalli hunsaður</string>
<string name="app_list__dismiss_downloading_app">Hætt við niðurhal</string> <string name="app_list__dismiss_downloading_app">Hætt við niðurhal</string>
<string name="installed_app__file_corrupt">F-Droid tók á móti EIO-villu: %s er líklega skemmd!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Við fundum öryggisveilu í %1$s. Við mælum með því að þetta forrit verði fjarlægt strax.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Við fundum öryggisveilu í %1$s. Við mælum með því að þetta forrit verði fjarlægt strax.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Við fundum öryggisveilu í %1$s. Við mælum með því að þetta forrit verði strax uppfært í nýjustu útgáfuna.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Við fundum öryggisveilu í %1$s. Við mælum með því að þetta forrit verði strax uppfært í nýjustu útgáfuna.</string>
<string name="updates__app_with_known_vulnerability__ignore">Hunsa</string> <string name="updates__app_with_known_vulnerability__ignore">Hunsa</string>

View File

@ -530,7 +530,6 @@
<string name="app_list__dismiss_vulnerable_app">Vulnerabilità ignorata</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilità ignorata</string>
<string name="app_list__dismiss_downloading_app">Download annullato</string> <string name="app_list__dismiss_downloading_app">Download annullato</string>
<string name="installed_app__file_corrupt">F-Droid ha ricevuto un errore EIO: %s probabilmente è corrotto!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Abbiamo trovato una vulnerabilità in %1$s. Ti raccomandiamo di disinstallare questa applicazione immediatamente.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Abbiamo trovato una vulnerabilità in %1$s. Ti raccomandiamo di disinstallare questa applicazione immediatamente.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Abbiamo trovato una vulnerabilità in %1$s. Ti raccomandiamo di aggiornare all\'ultima versione immediatamente.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Abbiamo trovato una vulnerabilità in %1$s. Ti raccomandiamo di aggiornare all\'ultima versione immediatamente.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignora</string> <string name="updates__app_with_known_vulnerability__ignore">Ignora</string>

View File

@ -460,7 +460,6 @@
<string name="app_list__dismiss_vulnerable_app">脆弱性を無視しました</string> <string name="app_list__dismiss_vulnerable_app">脆弱性を無視しました</string>
<string name="app_list__dismiss_downloading_app">ダウンロードをキャンセルしました</string> <string name="app_list__dismiss_downloading_app">ダウンロードをキャンセルしました</string>
<string name="installed_app__file_corrupt">F-DroidがEIOエラーを受信しました: %sは壊れている可能性があります</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$sで脆弱性を発見しました。今すぐにこのアプリをアンインストールすることをおすすめします。</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">%1$sで脆弱性を発見しました。今すぐにこのアプリをアンインストールすることをおすすめします。</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">%1$sで脆弱性を発見しました。今すぐに最新バージョンへのアップグレードすることをおすすめします。</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">%1$sで脆弱性を発見しました。今すぐに最新バージョンへのアップグレードすることをおすすめします。</string>
<string name="updates__app_with_known_vulnerability__ignore">無視する</string> <string name="updates__app_with_known_vulnerability__ignore">無視する</string>

View File

@ -366,7 +366,6 @@
<string name="installed_apps__activity_title">설치된 앱</string> <string name="installed_apps__activity_title">설치된 앱</string>
<string name="installed_app__updates_ignored">업데이트 무시됨</string> <string name="installed_app__updates_ignored">업데이트 무시됨</string>
<string name="installed_app__updates_ignored_for_suggested_version">버전 %1$s의 업데이트 무시됨</string> <string name="installed_app__updates_ignored_for_suggested_version">버전 %1$s의 업데이트 무시됨</string>
<string name="installed_app__file_corrupt">F-Droid가 EIO 오류를 수신했습니다: %s은(는) 아마도 손상되었을 것입니다!</string>
<string name="updates__tts__download_updates_for_all_apps">모든 업데이트 다운로드</string> <string name="updates__tts__download_updates_for_all_apps">모든 업데이트 다운로드</string>
<string name="updates__app_with_known_vulnerability__ignore">무시</string> <string name="updates__app_with_known_vulnerability__ignore">무시</string>

View File

@ -506,7 +506,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Ingen versjoner kompatible med enhet</string> <string name="app_details__no_versions__none_compatible_with_device">Ingen versjoner kompatible med enhet</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerte versjonen er ikke kompatibel med noen tilgjengelig versjoner. Å avinstallere programmet vil la deg vise og installere kompatible versjoner. Dette skjer ofte når programmer er installert via Google Play eller fra andre kilder, hvis de er signert med et annet sertifikat.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Den installerte versjonen er ikke kompatibel med noen tilgjengelig versjoner. Å avinstallere programmet vil la deg vise og installere kompatible versjoner. Dette skjer ofte når programmer er installert via Google Play eller fra andre kilder, hvis de er signert med et annet sertifikat.</string>
<string name="installed_app__file_corrupt">F-Droid støtte på en EIO-feil: %s er antagelig skadet!</string>
<string name="app_list__dismiss_app_update">Oppdatering oversett</string> <string name="app_list__dismiss_app_update">Oppdatering oversett</string>
<string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorert</string> <string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorert</string>
<string name="app_list__dismiss_downloading_app">Nedlasting avbrutt</string> <string name="app_list__dismiss_downloading_app">Nedlasting avbrutt</string>

View File

@ -493,7 +493,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Geen versies compatibel met apparaat</string> <string name="app_details__no_versions__none_compatible_with_device">Geen versies compatibel met apparaat</string>
<string name="app_details__no_versions__explain_incompatible_signatures">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna je ze kan installeren. Dit gebeurt vaak wanneer je apps installeert via Google Play of andere bronnen, en deze door een ander certificaat zijn ondertekend.</string> <string name="app_details__no_versions__explain_incompatible_signatures">De geïnstalleerde versie is niet compatibel met de beschikbare versies. Door de app te verwijderen zullen compatibele versies worden weergegeven, waarna je ze kan installeren. Dit gebeurt vaak wanneer je apps installeert via Google Play of andere bronnen, en deze door een ander certificaat zijn ondertekend.</string>
<string name="installed_app__file_corrupt">F-Droid ontving een EIO-fout: %s is waarschijnlijk beschadigd!</string>
<string name="app_list__dismiss_app_update">Update genegeerd</string> <string name="app_list__dismiss_app_update">Update genegeerd</string>
<string name="app_list__dismiss_vulnerable_app">Kwetsbaarheid genegeerd</string> <string name="app_list__dismiss_vulnerable_app">Kwetsbaarheid genegeerd</string>
<string name="app_list__dismiss_downloading_app">Download geannuleerd</string> <string name="app_list__dismiss_downloading_app">Download geannuleerd</string>

View File

@ -523,7 +523,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Brak wersji zgodnych z urządzeniem</string> <string name="app_details__no_versions__none_compatible_with_device">Brak wersji zgodnych z urządzeniem</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Zainstalowana wersja nie jest kompatybilna z jakąkolwiek dostępną wersją. Odinstalowanie aplikacji umożliwi podgląd i zainstalowanie zgodnych wersji. To często zdarza się w przypadku aplikacji zainstalowanych ze Sklepu Play lub z innych źródeł, jeżeli są one podpisane innym kluczem.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Zainstalowana wersja nie jest kompatybilna z jakąkolwiek dostępną wersją. Odinstalowanie aplikacji umożliwi podgląd i zainstalowanie zgodnych wersji. To często zdarza się w przypadku aplikacji zainstalowanych ze Sklepu Play lub z innych źródeł, jeżeli są one podpisane innym kluczem.</string>
<string name="installed_app__file_corrupt">F-Droid napotkał na błąd EIO: %s prawdopodobnie jest uszkodzony!</string>
<string name="app_list__dismiss_app_update">Ignorowana aktualizacja</string> <string name="app_list__dismiss_app_update">Ignorowana aktualizacja</string>
<string name="app_list__dismiss_vulnerable_app">Ignorowana łatka bezpieczeństwa</string> <string name="app_list__dismiss_vulnerable_app">Ignorowana łatka bezpieczeństwa</string>
<string name="app_list__dismiss_downloading_app">Anulowano pobieranie</string> <string name="app_list__dismiss_downloading_app">Anulowano pobieranie</string>

View File

@ -526,7 +526,6 @@
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Baixar cancelado</string> <string name="app_list__dismiss_downloading_app">Baixar cancelado</string>
<string name="installed_app__file_corrupt">F-Droid recebeu erro EIO: %s está provavelmente corrompido!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Nós encontramos uma vulnerabilidade com o %1$s. Nós recomendamos desinstalar o aplicativo imediatamente.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Nós encontramos uma vulnerabilidade com o %1$s. Nós recomendamos desinstalar o aplicativo imediatamente.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Nós encontramos uma vulnerabilidade com o %1$s. Nós recomendamos atualizar para a versão mais nova imediatamente.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Nós encontramos uma vulnerabilidade com o %1$s. Nós recomendamos atualizar para a versão mais nova imediatamente.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignorar</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorar</string>

View File

@ -533,7 +533,6 @@
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Descarga cancelada</string> <string name="app_list__dismiss_downloading_app">Descarga cancelada</string>
<string name="installed_app__file_corrupt">Ocorreu um erro EIO: possivelmente %s está danificada!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Encontrámos uma vulnerabilidade em %1$s. Recomendamos a desinstalação imediata da aplicação.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Encontrámos uma vulnerabilidade em %1$s. Recomendamos a desinstalação imediata da aplicação.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Encontrámos uma vulnerabilidade em %1$s. Recomendamos a atualização imediata da aplicação.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Encontrámos uma vulnerabilidade em %1$s. Recomendamos a atualização imediata da aplicação.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignorar</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorar</string>

View File

@ -471,7 +471,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Nici o versiune nu este compatibilă cu acest dispozitiv</string> <string name="app_details__no_versions__none_compatible_with_device">Nici o versiune nu este compatibilă cu acest dispozitiv</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Versiunea instalată nu este compatibilă cu cele disponibile. Dacă dezinstalați aplicația veți putea vedea și instala versiunile compatibile. Acest fapt se întâmplă cel mai des atunci când aplicațiile sunt instalate din Google Play sau din alte surse, dacă sunt semnate cu un certificat diferit.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Versiunea instalată nu este compatibilă cu cele disponibile. Dacă dezinstalați aplicația veți putea vedea și instala versiunile compatibile. Acest fapt se întâmplă cel mai des atunci când aplicațiile sunt instalate din Google Play sau din alte surse, dacă sunt semnate cu un certificat diferit.</string>
<string name="installed_app__file_corrupt">F-Droid a întâlnit o eroare EIO: %s este probabil corupt!</string>
<string name="app_list__dismiss_app_update">Actualizare ignorată</string> <string name="app_list__dismiss_app_update">Actualizare ignorată</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilitate ignorată</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilitate ignorată</string>
<string name="app_list__dismiss_downloading_app">Descărcare anulată</string> <string name="app_list__dismiss_downloading_app">Descărcare anulată</string>

View File

@ -508,7 +508,6 @@
<string name="app_list__dismiss_vulnerable_app">Уязвимость игнорируется</string> <string name="app_list__dismiss_vulnerable_app">Уязвимость игнорируется</string>
<string name="app_list__dismiss_downloading_app">Загрузка отменена</string> <string name="app_list__dismiss_downloading_app">Загрузка отменена</string>
<string name="installed_app__file_corrupt">F-Droid получил ошибку EIO: вероятно, файл %s поврежден!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Обнаружена уязвимость в %1$s. Мы рекомендуем немедленно удалить это приложение.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Обнаружена уязвимость в %1$s. Мы рекомендуем немедленно удалить это приложение.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Обнаружена уязвимость в %1$s. Мы рекомендуем немедленно обновиться до новейшей версии.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Обнаружена уязвимость в %1$s. Мы рекомендуем немедленно обновиться до новейшей версии.</string>
<string name="updates__app_with_known_vulnerability__ignore">Пропустить</string> <string name="updates__app_with_known_vulnerability__ignore">Пропустить</string>

View File

@ -533,7 +533,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Peruna versione cumpatìbile cun su dispositivu</string> <string name="app_details__no_versions__none_compatible_with_device">Peruna versione cumpatìbile cun su dispositivu</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Sa versione installada no est cumpatìbile cun sas versiones disponìbiles. Disinstallende s\'aplicatzione t\'at a permìtere de bìdere e installare versiones cumpatìbiles. Custu acontessit, a s\'ispissu, cun aplicatziones installadas pro mèdiu de Google Play o àteras mitzas, si sunt firmadas cun unu tzertificadu diferente.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Sa versione installada no est cumpatìbile cun sas versiones disponìbiles. Disinstallende s\'aplicatzione t\'at a permìtere de bìdere e installare versiones cumpatìbiles. Custu acontessit, a s\'ispissu, cun aplicatziones installadas pro mèdiu de Google Play o àteras mitzas, si sunt firmadas cun unu tzertificadu diferente.</string>
<string name="installed_app__file_corrupt">F-Droid at retzidu un\'errore EIO: %s est probabilmente corrùmpidu!</string>
<string name="app_list__dismiss_app_update">Agiornamentu ignoradu</string> <string name="app_list__dismiss_app_update">Agiornamentu ignoradu</string>
<string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string> <string name="app_list__dismiss_vulnerable_app">Vulnerabilidade ignorada</string>
<string name="app_list__dismiss_downloading_app">Iscantzellamentu annulladu</string> <string name="app_list__dismiss_downloading_app">Iscantzellamentu annulladu</string>

View File

@ -530,7 +530,6 @@
<string name="app_list__dismiss_vulnerable_app">Zraniteľnosť bola ignorovaná</string> <string name="app_list__dismiss_vulnerable_app">Zraniteľnosť bola ignorovaná</string>
<string name="app_list__dismiss_downloading_app">Sťahovanie bolo zrušené</string> <string name="app_list__dismiss_downloading_app">Sťahovanie bolo zrušené</string>
<string name="installed_app__file_corrupt">F-Droid obdržal chybu EIO: %s je pravdepodobne poškodený!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Zistili sme zraniteľnosť %1$s. Odporúčame okamžite odinštalovať túto aplikáciu.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Zistili sme zraniteľnosť %1$s. Odporúčame okamžite odinštalovať túto aplikáciu.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Objavili sme zraniteľnosť %1$s. Odporúčame ihneď aktualizovať na najnovšiu verziu.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Objavili sme zraniteľnosť %1$s. Odporúčame ihneď aktualizovať na najnovšiu verziu.</string>
<string name="updates__app_with_known_vulnerability__ignore">Ignorovať</string> <string name="updates__app_with_known_vulnerability__ignore">Ignorovať</string>

View File

@ -514,7 +514,6 @@
<string name="app_list__dismiss_vulnerable_app">Рањивост је занемарена</string> <string name="app_list__dismiss_vulnerable_app">Рањивост је занемарена</string>
<string name="app_list__dismiss_downloading_app">Преузимање отказано</string> <string name="app_list__dismiss_downloading_app">Преузимање отказано</string>
<string name="installed_app__file_corrupt">Ф-дроид је примио ЕУИ грешку: %s је вероватно покварена!</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа уклоните апликацију.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа уклоните апликацију.</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">Пронашли смо безбедносну рањивост у %1$s. Препоручујемо да сместа надоградите апликацију.</string>
<string name="updates__app_with_known_vulnerability__ignore">Занемари</string> <string name="updates__app_with_known_vulnerability__ignore">Занемари</string>

View File

@ -488,7 +488,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Inga versioner är kompatibla med enheten</string> <string name="app_details__no_versions__none_compatible_with_device">Inga versioner är kompatibla med enheten</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Den installerade versionen är inte kompatibel med några tillgängliga versioner. Om du avinstallerar appen kan du visa och installera kompatibla versioner. Det här händer ofta med appar installerade via Google Play eller andra källor, om de är signerade med ett annat certifikat.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Den installerade versionen är inte kompatibel med några tillgängliga versioner. Om du avinstallerar appen kan du visa och installera kompatibla versioner. Det här händer ofta med appar installerade via Google Play eller andra källor, om de är signerade med ett annat certifikat.</string>
<string name="installed_app__file_corrupt">F-Droid mottog EIO-fel: %s är förmodligen korrupt!</string>
<string name="app_list__dismiss_app_update">Uppdatering ignorerad</string> <string name="app_list__dismiss_app_update">Uppdatering ignorerad</string>
<string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorerad</string> <string name="app_list__dismiss_vulnerable_app">Sårbarhet ignorerad</string>
<string name="app_list__dismiss_downloading_app">Hämtning avbruten</string> <string name="app_list__dismiss_downloading_app">Hämtning avbruten</string>

View File

@ -503,7 +503,6 @@
<string name="app_details__no_versions__none_compatible_with_device">Cihazla uyumlu sürüm yok</string> <string name="app_details__no_versions__none_compatible_with_device">Cihazla uyumlu sürüm yok</string>
<string name="app_details__no_versions__explain_incompatible_signatures">Kurulu sürüm hiçbir kullanılabilir sürümle uyumlu değil. Uygulamayı kaldırmak, uyumlu sürümleri görüntüleyip kurmanızı sağlayacaktır. Bu genellikle, farklı bir sertifika ile imzalanmışsa, Google Play veya diğer kaynaklar aracılığıyla kurulmuş uygulamalarda oluşur.</string> <string name="app_details__no_versions__explain_incompatible_signatures">Kurulu sürüm hiçbir kullanılabilir sürümle uyumlu değil. Uygulamayı kaldırmak, uyumlu sürümleri görüntüleyip kurmanızı sağlayacaktır. Bu genellikle, farklı bir sertifika ile imzalanmışsa, Google Play veya diğer kaynaklar aracılığıyla kurulmuş uygulamalarda oluşur.</string>
<string name="installed_app__file_corrupt">F-Droid EIO hatası aldı: %s büyük olasılıkla bozuk!</string>
<string name="app_list__dismiss_app_update">Güncelleme yok sayıldı</string> <string name="app_list__dismiss_app_update">Güncelleme yok sayıldı</string>
<string name="app_list__dismiss_vulnerable_app">Güvenlik açığı yok sayıldı</string> <string name="app_list__dismiss_vulnerable_app">Güvenlik açığı yok sayıldı</string>
<string name="app_list__dismiss_downloading_app">İndirme iptal edildi</string> <string name="app_list__dismiss_downloading_app">İndirme iptal edildi</string>

View File

@ -511,7 +511,6 @@
<string name="app_list_download_ready">Завантажено, готовий до встановлення</string> <string name="app_list_download_ready">Завантажено, готовий до встановлення</string>
<string name="status_inserting_x_apps">Збереження деталей застосунку (%1$d/%2$d) з %3$s</string> <string name="status_inserting_x_apps">Збереження деталей застосунку (%1$d/%2$d) з %3$s</string>
<string name="installed_app__file_corrupt">F-Droid отримав помилку EIO: %s ймовірно, зіпсований!</string>
<string name="app_list__dismiss_app_update">Оновлення ігнорується</string> <string name="app_list__dismiss_app_update">Оновлення ігнорується</string>
<string name="app_list__dismiss_vulnerable_app">Вразливість ігнорується</string> <string name="app_list__dismiss_vulnerable_app">Вразливість ігнорується</string>
<string name="app_list__dismiss_downloading_app">Завантаження скасовано</string> <string name="app_list__dismiss_downloading_app">Завантаження скасовано</string>

View File

@ -375,7 +375,6 @@
<string name="installed_apps__activity_title">Ứng dụng đã cài đặt</string> <string name="installed_apps__activity_title">Ứng dụng đã cài đặt</string>
<string name="installed_app__updates_ignored">Đã bỏ qua các cập nhật</string> <string name="installed_app__updates_ignored">Đã bỏ qua các cập nhật</string>
<string name="installed_app__updates_ignored_for_suggested_version">Đã bỏ qua cập nhật với phiên bản %1$s</string> <string name="installed_app__updates_ignored_for_suggested_version">Đã bỏ qua cập nhật với phiên bản %1$s</string>
<string name="installed_app__file_corrupt">F-Droid nhận được lỗi vào ra: Có khả năng %s đã bị hỏng!</string>
<string name="updates__tts__download_updates_for_all_apps">Tải về tất cả các bản cập nhật</string> <string name="updates__tts__download_updates_for_all_apps">Tải về tất cả các bản cập nhật</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">Chúng tôi đã tìm thấy lỗ hổng bảo mật trong ứng dụng %1$s. Chúng tôi khuyên bạn gỡ bỏ ứng dụng này ngay lập tức.</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">Chúng tôi đã tìm thấy lỗ hổng bảo mật trong ứng dụng %1$s. Chúng tôi khuyên bạn gỡ bỏ ứng dụng này ngay lập tức.</string>

View File

@ -457,7 +457,6 @@
<string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string> <string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string>
<string name="app_list__dismiss_downloading_app">已取消下载</string> <string name="app_list__dismiss_downloading_app">已取消下载</string>
<string name="installed_app__file_corrupt">F-Droid收到了EIO错误%s很可能已经损毁</string>
<string name="updates__app_with_known_vulnerability__prompt_uninstall">我们发现了关于%1$s的漏洞建议您立即卸载此应用。</string> <string name="updates__app_with_known_vulnerability__prompt_uninstall">我们发现了关于%1$s的漏洞建议您立即卸载此应用。</string>
<string name="updates__app_with_known_vulnerability__prompt_upgrade">我们发现了关于%1$s的漏洞建议您立即升级到最新的版本。</string> <string name="updates__app_with_known_vulnerability__prompt_upgrade">我们发现了关于%1$s的漏洞建议您立即升级到最新的版本。</string>
<string name="updates__app_with_known_vulnerability__ignore">忽略</string> <string name="updates__app_with_known_vulnerability__ignore">忽略</string>

View File

@ -456,5 +456,4 @@
<string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string> <string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string> <string name="app_details__no_versions__explain_incompatible_signatures">已安裝的程式版本與可供安裝的版本並不相容。卸載現有的應用程式將讓您檢視及安裝相容的版本。此問題通常出現於透過 Google Play 或其他途徑安裝,並使用不同認證的應用程式。</string>
<string name="installed_app__file_corrupt">F-Droid 偵測到一個 EIO 錯誤:%s 很可能已崩潰!</string>
</resources> </resources>

View File

@ -469,7 +469,6 @@
<string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string> <string name="app_details__no_versions__none_compatible_with_device">沒有與裝置相容的版本</string>
<string name="app_details__no_versions__explain_incompatible_signatures">已安裝的版本不相容於任何可用的版本。解除安裝該應用程式,將使您能夠查看和安裝相容的版本。這通常是透過 Google Play 或其它來源安裝的應用程式,如果它們是由不同的證書簽署時才會發生。</string> <string name="app_details__no_versions__explain_incompatible_signatures">已安裝的版本不相容於任何可用的版本。解除安裝該應用程式,將使您能夠查看和安裝相容的版本。這通常是透過 Google Play 或其它來源安裝的應用程式,如果它們是由不同的證書簽署時才會發生。</string>
<string name="installed_app__file_corrupt">F-Droid 接收到 EIO 錯誤:%s 很可能已損壞!</string>
<string name="app_list__dismiss_app_update">已忽略更新</string> <string name="app_list__dismiss_app_update">已忽略更新</string>
<string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string> <string name="app_list__dismiss_vulnerable_app">已忽略漏洞</string>
<string name="app_list__dismiss_downloading_app">已取消下載</string> <string name="app_list__dismiss_downloading_app">已取消下載</string>

View File

@ -96,7 +96,6 @@ This often occurs with apps installed via Google Play or other sources, if they
<string name="installed_app__updates_ignored_for_suggested_version">Updates ignored for Version %1$s</string> <string name="installed_app__updates_ignored_for_suggested_version">Updates ignored for Version %1$s</string>
<!-- The inline download button shown in the "Updates" screen only uses an icon and so requires <!-- The inline download button shown in the "Updates" screen only uses an icon and so requires
some descriptive text for the TTS engine --> some descriptive text for the TTS engine -->
<string name="installed_app__file_corrupt">F-Droid received EIO error: %s is probably corrupt!</string>
<string name="updates__tts__download_app">Download</string> <string name="updates__tts__download_app">Download</string>
<string name="updates__tts__download_updates_for_all_apps">Download all updates</string> <string name="updates__tts__download_updates_for_all_apps">Download all updates</string>