From 48dd3d09e6d78f965796bea5ad400e8e77f39d0d Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Tue, 19 Jan 2016 16:18:06 +0100 Subject: import: handle FileNotFoundException (fixes #1688) --- .../keychain/operations/results/GetKeyResult.java | 13 ++++--- .../operations/results/OperationResult.java | 14 +++---- .../keychain/pgp/UncachedKeyRing.java | 1 - .../keychain/ui/adapter/ImportKeysListLoader.java | 43 +++++++++++++--------- OpenKeychain/src/main/res/values-de/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-es/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-eu/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-fr/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-ja/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-nl/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-pl/strings.xml | 2 +- OpenKeychain/src/main/res/values-ru/strings.xml | 2 +- OpenKeychain/src/main/res/values-sr/strings.xml | 10 ++--- OpenKeychain/src/main/res/values-sv/strings.xml | 4 +- OpenKeychain/src/main/res/values-tr/strings.xml | 2 +- .../src/main/res/values-zh-rTW/strings.xml | 4 +- OpenKeychain/src/main/res/values/strings.xml | 16 +++----- 17 files changed, 88 insertions(+), 83 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/GetKeyResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/GetKeyResult.java index bdc4d9a47..76ffaff4a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/GetKeyResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/GetKeyResult.java @@ -44,12 +44,13 @@ public class GetKeyResult extends InputPendingResult { super(log, requiredInput, cryptoInputParcel); } - public static final int RESULT_ERROR_NO_VALID_KEYS = RESULT_ERROR + 8; - public static final int RESULT_ERROR_NO_PGP_PARTS = RESULT_ERROR + 16; - public static final int RESULT_ERROR_QUERY_TOO_SHORT = RESULT_ERROR + 32; - public static final int RESULT_ERROR_TOO_MANY_RESPONSES = RESULT_ERROR + 64; - public static final int RESULT_ERROR_TOO_SHORT_OR_TOO_MANY_RESPONSES = RESULT_ERROR + 128; - public static final int RESULT_ERROR_QUERY_FAILED = RESULT_ERROR + 256; + public static final int RESULT_ERROR_NO_VALID_KEYS = RESULT_ERROR + (1<<4); + public static final int RESULT_ERROR_NO_PGP_PARTS = RESULT_ERROR + (2<<4); + public static final int RESULT_ERROR_QUERY_TOO_SHORT = RESULT_ERROR + (3<<4); + public static final int RESULT_ERROR_TOO_MANY_RESPONSES = RESULT_ERROR + (4<<4); + public static final int RESULT_ERROR_TOO_SHORT_OR_TOO_MANY_RESPONSES = RESULT_ERROR + (5<<4); + public static final int RESULT_ERROR_QUERY_FAILED = RESULT_ERROR + (6<<4); + public static final int RESULT_ERROR_FILE_NOT_FOUND = RESULT_ERROR + (7<<4); public GetKeyResult(Parcel source) { super(source); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java index 1e90c2cc3..f9c2db8e8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/results/OperationResult.java @@ -810,13 +810,13 @@ public abstract class OperationResult implements Parcelable { MSG_NO_VALID_ENC (LogLevel.ERROR, R.string.error_invalid_data), // get key - MSG_GET_SUCCESS(LogLevel.OK, R.string.msg_download_success), - MSG_GET_NO_VALID_KEYS(LogLevel.ERROR, R.string.msg_download_no_valid_keys), - MSG_GET_NO_PGP_PARTS(LogLevel.ERROR, R.string.msg_download_no_pgp_parts), - MSG_GET_QUERY_TOO_SHORT(LogLevel.ERROR, R.string.msg_download_query_too_short), - MSG_GET_TOO_MANY_RESPONSES(LogLevel.ERROR, R.string.msg_download_too_many_responses), - MSG_GET_QUERY_TOO_SHORT_OR_TOO_MANY_RESPONSES(LogLevel.ERROR, R.string.msg_download_query_too_short_or_too_many_responses), - MSG_GET_QUERY_FAILED(LogLevel.ERROR, R.string.msg_download_query_failed), + MSG_GET_SUCCESS (LogLevel.OK, R.string.msg_get_success), + MSG_GET_NO_VALID_KEYS (LogLevel.ERROR, R.string.msg_get_no_valid_keys), + MSG_GET_QUERY_TOO_SHORT (LogLevel.ERROR, R.string.msg_get_query_too_short), + MSG_GET_TOO_MANY_RESPONSES (LogLevel.ERROR, R.string.msg_get_too_many_responses), + MSG_GET_QUERY_TOO_SHORT_OR_TOO_MANY_RESPONSES (LogLevel.ERROR, R.string.msg_get_query_too_short_or_too_many_responses), + MSG_GET_QUERY_FAILED (LogLevel.ERROR, R.string.msg_download_query_failed), + MSG_GET_FILE_NOT_FOUND (LogLevel.ERROR, R.string.msg_get_file_not_found), MSG_DEL_ERROR_EMPTY (LogLevel.ERROR, R.string.msg_del_error_empty), MSG_DEL_ERROR_MULTI_SECRET (LogLevel.ERROR, R.string.msg_del_error_multi_secret), diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java index af09cf235..d1382f3dd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/pgp/UncachedKeyRing.java @@ -221,7 +221,6 @@ public class UncachedKeyRing { public boolean hasNext() throws IOException; public E next() throws IOException; } - public void encodeArmored(OutputStream out, String version) throws IOException { ArmoredOutputStream aos = new ArmoredOutputStream(out); if (version != null) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java index 038ebd5dd..0201318e8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/adapter/ImportKeysListLoader.java @@ -26,6 +26,7 @@ import java.io.InputStream; import java.util.ArrayList; import android.content.Context; +import android.support.annotation.NonNull; import android.support.v4.content.AsyncTaskLoader; import android.support.v4.util.LongSparseArray; @@ -34,6 +35,8 @@ import org.sufficientlysecure.keychain.keyimport.ImportKeysListEntry; import org.sufficientlysecure.keychain.keyimport.ParcelableKeyRing; import org.sufficientlysecure.keychain.operations.results.GetKeyResult; import org.sufficientlysecure.keychain.operations.results.OperationResult; +import org.sufficientlysecure.keychain.operations.results.OperationResult.LogType; +import org.sufficientlysecure.keychain.operations.results.OperationResult.OperationLog; import org.sufficientlysecure.keychain.pgp.UncachedKeyRing; import org.sufficientlysecure.keychain.pgp.UncachedKeyRing.IteratorWithIOThrow; import org.sufficientlysecure.keychain.ui.ImportKeysListFragment.BytesLoaderState; @@ -65,16 +68,25 @@ public class ImportKeysListLoader return mEntryListWrapper; } - GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_OK, null); - mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult); + { + GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_OK, null); + mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult); + } if (mLoaderState == null) { Log.e(Constants.TAG, "Input data is null!"); return mEntryListWrapper; } - InputData inputData = getInputData(getContext(), mLoaderState); - generateListOfKeyrings(inputData); + try { + InputData inputData = getInputData(getContext(), mLoaderState); + generateListOfKeyrings(inputData); + } catch (FileNotFoundException e) { + OperationLog log = new OperationLog(); + log.add(LogType.MSG_GET_FILE_NOT_FOUND, 0); + GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_ERROR_FILE_NOT_FOUND, log); + mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult); + } return mEntryListWrapper; } @@ -129,25 +141,22 @@ public class ImportKeysListLoader OperationResult.OperationLog log = new OperationResult.OperationLog(); log.add(OperationResult.LogType.MSG_GET_NO_VALID_KEYS, 0); GetKeyResult getKeyResult = new GetKeyResult(GetKeyResult.RESULT_ERROR_NO_VALID_KEYS, log); - mEntryListWrapper = new AsyncTaskResultWrapper<> - (mData, getKeyResult); + mEntryListWrapper = new AsyncTaskResultWrapper<>(mData, getKeyResult); } } - private static InputData getInputData(Context context, BytesLoaderState loaderState) { - InputData inputData = null; + @NonNull + private static InputData getInputData(Context context, BytesLoaderState loaderState) throws FileNotFoundException { + InputData inputData; if (loaderState.mKeyBytes != null) { inputData = new InputData(new ByteArrayInputStream(loaderState.mKeyBytes), loaderState.mKeyBytes.length); } else if (loaderState.mDataUri != null) { - try { - InputStream inputStream = context.getContentResolver().openInputStream(loaderState.mDataUri); - long length = FileHelper.getFileSize(context, loaderState.mDataUri, -1); - - inputData = new InputData(inputStream, length); - } catch (FileNotFoundException e) { - Log.e(Constants.TAG, "FileNotFoundException!", e); - return null; - } + InputStream inputStream = context.getContentResolver().openInputStream(loaderState.mDataUri); + long length = FileHelper.getFileSize(context, loaderState.mDataUri, -1); + + inputData = new InputData(inputStream, length); + } else { + throw new AssertionError("Loader state must contain bytes or a data URI. This is a bug!"); } return inputData; diff --git a/OpenKeychain/src/main/res/values-de/strings.xml b/OpenKeychain/src/main/res/values-de/strings.xml index f194b4ab0..6eada434b 100644 --- a/OpenKeychain/src/main/res/values-de/strings.xml +++ b/OpenKeychain/src/main/res/values-de/strings.xml @@ -1300,16 +1300,16 @@ Datenverarbeitung erfolgreich! Überspringe MIME-Parsing Benutzerkonto gespeichert - Erfolgreich heruntergeladen! - Keine gültigen Schlüssel in der Datei/Zwischenablage gefunden! + Erfolgreich heruntergeladen! + Keine gültigen Schlüssel in der Datei/Zwischenablage gefunden! NOCH ZU MACHEN: Plurale! ein Teil der geladenen Datei ist ein gültiges OpenPGP-Objekt, aber kein OpenPGP-Schlüssel Teile der geladenen Dateien sind gültige OpenPGP-Objekte, aber keine OpenPGP-Schlüssel - Die Suchanfrage ist zu kurz, bitte die Suchanfrage verfeinern! - Schlüsselsuchanfrage lieferte zu viele Kandidaten, bitte die Suchanfrage verfeinern! - Entweder keine oder zu viele Schlüssel wurden gefunden, bitte die Suchanfrage prä­zi­sie­ren! + Die Suchanfrage ist zu kurz, bitte die Suchanfrage verfeinern! + Schlüsselsuchanfrage lieferte zu viele Kandidaten, bitte die Suchanfrage verfeinern! + Entweder keine oder zu viele Schlüssel wurden gefunden, bitte die Suchanfrage prä­zi­sie­ren! Beim Suchen der Schlüssel ist ein Fehler aufgetreten. Versuche Keybase.io-Verifikation für %s diff --git a/OpenKeychain/src/main/res/values-es/strings.xml b/OpenKeychain/src/main/res/values-es/strings.xml index ad84aa1bb..b5dd92164 100644 --- a/OpenKeychain/src/main/res/values-es/strings.xml +++ b/OpenKeychain/src/main/res/values-es/strings.xml @@ -1227,16 +1227,16 @@ Content-Type: %s Los datos se procesaron exitosamente Cuenta guardada - ¡Descargado con éxito! - ¡No se encontraron claves válidas en el fichero/portapapeles! + ¡Descargado con éxito! + ¡No se encontraron claves válidas en el fichero/portapapeles! PENDIENTE: ¡plurales! parte del archivo cargado es un objeto OpenPGP válido pero no una clave OpenPGP partes del archivo cargado son objetos OpenPGP válidos pero no claves OpenPGP - Solicitud de búsqueda demasiado corta. ¡Por favor refine su petición! - La solicitud de búsqueda de clave devolvió demasiados candidatos. ¡Por favor refine su petición! - O bien no hay claves o se han encontrado demasiadas. ¡Por favor mejore su petición! + Solicitud de búsqueda demasiado corta. ¡Por favor refine su petición! + La solicitud de búsqueda de clave devolvió demasiados candidatos. ¡Por favor refine su petición! + O bien no hay claves o se han encontrado demasiadas. ¡Por favor mejore su petición! Ocurrió un error al buscar claves. Intentando la verificación con Keybase para %s diff --git a/OpenKeychain/src/main/res/values-eu/strings.xml b/OpenKeychain/src/main/res/values-eu/strings.xml index f5b74de93..ef19d48d8 100644 --- a/OpenKeychain/src/main/res/values-eu/strings.xml +++ b/OpenKeychain/src/main/res/values-eu/strings.xml @@ -1180,16 +1180,16 @@ Datu prozesatzea ongi burutu da MIME azterketa jauzi egiten Kontua gordeta - Ongi jeitsi da! - Ez da baliozko giltzarik aurkitu agiri/gakoan! + Ongi jeitsi da! + Ez da baliozko giltzarik aurkitu agiri/gakoan! TODO: anitzak! gertatutako agiriaren zati bat baliozko OpenPGP objetua da baina ez OpenPGP giltza gertatutako agiriaren zati batzuk baliozko OpenPGP objetuak dira baina ez OpenPGP giltzak - Bilaketa eskaera laburregia. Mesedez zehaztu zure eskaera! - Giltza bilaketa eskaerak hautagai gehiegi itzuli ditu. Mesedez zehaztu zure eskaera! - Ez dago giltzarik edo gehiegi aurkitu dira. Mesedez hobetu zure eskaera! + Bilaketa eskaera laburregia. Mesedez zehaztu zure eskaera! + Giltza bilaketa eskaerak hautagai gehiegi itzuli ditu. Mesedez zehaztu zure eskaera! + Ez dago giltzarik edo gehiegi aurkitu dira. Mesedez hobetu zure eskaera! Akats bat gertatu da giltzak bilatzerakoan. Giltzabase egiaztapen saiakera %s-rentzat diff --git a/OpenKeychain/src/main/res/values-fr/strings.xml b/OpenKeychain/src/main/res/values-fr/strings.xml index dc750e968..0a989fcca 100644 --- a/OpenKeychain/src/main/res/values-fr/strings.xml +++ b/OpenKeychain/src/main/res/values-fr/strings.xml @@ -1300,16 +1300,16 @@ Traitement des données réussi L\'analyse MIME est ignorée Compte enregistré - Téléchargement réussi ! - Aucune clef valide n\'a été trouvée dans le fichier/presse-papiers | + Téléchargement réussi ! + Aucune clef valide n\'a été trouvée dans le fichier/presse-papiers | À FAIRE : les pluriels ! une partie du fichier chargé est un objet OpenPGP valide mais pas une clef OpenPGP certaines parties du fichier chargé sont des objets OpenPGP valides mais pas des clefs OpenPGP - La requête de recherche est trop courte. Veuillez raffiner votre requête ! - La requête de recherche de clef a retourné trop de candidats. Veuillez raffiner votre requête ! - Soit aucune clef ou trop de clefs ont été trouvées. Veuillez améliorer votre requête ! + La requête de recherche est trop courte. Veuillez raffiner votre requête ! + La requête de recherche de clef a retourné trop de candidats. Veuillez raffiner votre requête ! + Soit aucune clef ou trop de clefs ont été trouvées. Veuillez améliorer votre requête ! Une erreur est survenue lors de la recherche de clefs. Tentative de vérification « keybase » pour %s diff --git a/OpenKeychain/src/main/res/values-ja/strings.xml b/OpenKeychain/src/main/res/values-ja/strings.xml index 859cccaef..a986025ce 100644 --- a/OpenKeychain/src/main/res/values-ja/strings.xml +++ b/OpenKeychain/src/main/res/values-ja/strings.xml @@ -1277,15 +1277,15 @@ データの処理に成功 MIME解析をスキップしています アカウント保存 - ダウンロードに成功しました! - ファイル/クリップボードにて正しい鍵が見付かりません! + ダウンロードに成功しました! + ファイル/クリップボードにて正しい鍵が見付かりません! TODO: 複数部分! 読み込んだファイルのOpenPGPオブジェクト部分は正しいですが、OpenPGPの鍵ではありません - 鍵検索のクエリが短かすぎます。クエリを精密化してください! - 鍵検索のクエリが沢山の候補を返しました。クエリを精密化してください! - 鍵がまったく無いか、多すぎる鍵が見付かりました。クエリを改善してください! + 鍵検索のクエリが短かすぎます。クエリを精密化してください! + 鍵検索のクエリが沢山の候補を返しました。クエリを精密化してください! + 鍵がまったく無いか、多すぎる鍵が見付かりました。クエリを改善してください! 鍵の検索時にエラーが発生しました。 %s のkeybase検証を試行中 diff --git a/OpenKeychain/src/main/res/values-nl/strings.xml b/OpenKeychain/src/main/res/values-nl/strings.xml index 9d205c46f..41a207016 100644 --- a/OpenKeychain/src/main/res/values-nl/strings.xml +++ b/OpenKeychain/src/main/res/values-nl/strings.xml @@ -1040,16 +1040,16 @@ Account opgeslaan - Succesvol gedownload! - Geen geldige sleutels gevonden in bestand/klembord! + Succesvol gedownload! + Geen geldige sleutels gevonden in bestand/klembord! TODO: meervouden! Deel van het geladen bestand is geldig OpenPGP object maar niet een OpenPGP sleutel Delen van het geladen bestand zijn geldige OpenPGP objecten maar niet OpenPGP sleutels - Zoekopdracht te kort. Gelieve je zoekopdracht te verfijnen! - Zoekopdracht gaf te veel kandidaten. Gelieve je zoekopdracht te verfijnen! - Geen of te veel sleutels werden gevonden. Gelieve je zoekopdracht te verfijnen! + Zoekopdracht te kort. Gelieve je zoekopdracht te verfijnen! + Zoekopdracht gaf te veel kandidaten. Gelieve je zoekopdracht te verfijnen! + Geen of te veel sleutels werden gevonden. Gelieve je zoekopdracht te verfijnen! Er trad een fout op bij het zoeken naar sleutels. Keybaseverificatie voor %s wordt geprobeerd diff --git a/OpenKeychain/src/main/res/values-pl/strings.xml b/OpenKeychain/src/main/res/values-pl/strings.xml index 6e74a184a..85e9f83bb 100644 --- a/OpenKeychain/src/main/res/values-pl/strings.xml +++ b/OpenKeychain/src/main/res/values-pl/strings.xml @@ -517,7 +517,7 @@ OSTRZEŻENIE: Jeżeli nie wiesz, czemu wyświetlił się ten komunikat, nie zezw Zapisano konto - Pobrano pomyślnie! + Pobrano pomyślnie! Część wczytanego pliku jest poprawnym obiektem OpenPGP, ale nie jest kluczem OpenPGP Część wczytanego pliku to poprawne obiekty OpenPGP, ale nie są kluczami OpenPGP diff --git a/OpenKeychain/src/main/res/values-ru/strings.xml b/OpenKeychain/src/main/res/values-ru/strings.xml index 85a18fcc0..229bbeb39 100644 --- a/OpenKeychain/src/main/res/values-ru/strings.xml +++ b/OpenKeychain/src/main/res/values-ru/strings.xml @@ -862,7 +862,7 @@ Секретные ключи можно удалять только по одному! Аккаунт сохранен - Загрузка завершена! + Загрузка завершена! часть загруженного файла содержит данные OpenPGP, но это не ключ части загруженного файла содержат данные OpenPGP, но это не ключ diff --git a/OpenKeychain/src/main/res/values-sr/strings.xml b/OpenKeychain/src/main/res/values-sr/strings.xml index a290f43ce..84558d0e8 100644 --- a/OpenKeychain/src/main/res/values-sr/strings.xml +++ b/OpenKeychain/src/main/res/values-sr/strings.xml @@ -1311,17 +1311,17 @@ Обрада података је успела Прескачем рашчлањивање МИМЕ-а Налог је сачуван - Успешно преузето! - Нема исправних кључева у фајлу/клипборду! + Успешно преузето! + Нема исправних кључева у фајлу/клипборду! УРАДИТИ: множине! део учитаног фајла је исправан ОпенПГП објекат али није ОпенПГП кључ дела учитаног фајла су исправни ОпенПГП објекти али нису ОпенПГП кључеви делови учитаног фајла су исправни ОпенПГП објекти али нису ОпенПГП кључеви - Упит за претрагу је прекратак. Прецизирајте упит! - Претрага кључева је вратила превише кандидата. Прецизирајте упит! - Или није нађен ниједан кључ или их је нађено превише. Побољшајте ваш упит! + Упит за претрагу је прекратак. Прецизирајте упит! + Претрага кључева је вратила превише кандидата. Прецизирајте упит! + Или није нађен ниједан кључ или их је нађено превише. Побољшајте ваш упит! Дошло је до грешке приликом претраге кључева. Проверавам %s на keybase.io diff --git a/OpenKeychain/src/main/res/values-sv/strings.xml b/OpenKeychain/src/main/res/values-sv/strings.xml index 29d021cd0..5ae46d286 100644 --- a/OpenKeychain/src/main/res/values-sv/strings.xml +++ b/OpenKeychain/src/main/res/values-sv/strings.xml @@ -830,8 +830,8 @@ Konto sparat - Hämtning lyckades! - Inga giltiga nycklar hittades i fil/urklipp! + Hämtning lyckades! + Inga giltiga nycklar hittades i fil/urklipp! en del av den inlästa filen är ett giltigt OpenPGP-objekt men inte en OpenPGP-nyckel delar av den inlästa filen är giltiga OpenPGP-objekt men inte OpenPGP-nycklar diff --git a/OpenKeychain/src/main/res/values-tr/strings.xml b/OpenKeychain/src/main/res/values-tr/strings.xml index f693af084..87005eaed 100644 --- a/OpenKeychain/src/main/res/values-tr/strings.xml +++ b/OpenKeychain/src/main/res/values-tr/strings.xml @@ -387,7 +387,7 @@ Silinecek bir şey yok! Hesap kaydedildi - Başarıyla indirildi! + Başarıyla indirildi! diff --git a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml index a1398968c..ff063b72f 100644 --- a/OpenKeychain/src/main/res/values-zh-rTW/strings.xml +++ b/OpenKeychain/src/main/res/values-zh-rTW/strings.xml @@ -660,8 +660,8 @@ 私鑰只能分別刪除! 帳戶已儲存 - 下載成功! - 在檔案/剪貼簿中找不到有效的金鑰! + 下載成功! + 在檔案/剪貼簿中找不到有效的金鑰! 查詢金鑰的時候發生錯誤。 diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml index d15f66bd0..b801a7e10 100644 --- a/OpenKeychain/src/main/res/values/strings.xml +++ b/OpenKeychain/src/main/res/values/strings.xml @@ -1410,16 +1410,12 @@ "Account saved" - "Downloaded successfully!" - "No valid keys found in file/clipboard!" - "TODO: plurals!" - - "part of the loaded file is a valid OpenPGP object but not a OpenPGP key" - "parts of the loaded file are valid OpenPGP objects but not OpenPGP keys" - - "Search query too short. Please refine your query!" - "Key search query returned too many candidates. Please refine your query!" - "Either no keys or too many have been found. Please improve your query!" + "Downloaded successfully!" + "Input file not found!" + "No valid keys found in file/clipboard!" + "Key search query returned too many candidates. Please refine your query!" + "Search query too short. Please refine your query!" + "Either no keys or too many have been found. Please improve your query!" "An error occurred when searching for keys." -- cgit v1.2.3