From: jabarros Date: Fri, 12 Sep 2014 11:55:03 +0000 (+0200) Subject: Merge pull request #619 from owncloud/fix_crash_when_connecting_to_wifi X-Git-Tag: oc-android-1.7.0_signed~184 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/a720d1a0495866cc9ce7776cbcae3199332a3478?hp=3fac2e01a1a625f312d8f5eabfd2e3b8f7432a3f Merge pull request #619 from owncloud/fix_crash_when_connecting_to_wifi FileUploader service checks existance of account before accepting an upload --- diff --git a/owncloud-android-library b/owncloud-android-library index 5d146c92..79d58663 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 5d146c923620523a871a0fe50bdcbc3b7559df8c +Subproject commit 79d586637ee306fdbefbbc4439eb3b058f6877c9 diff --git a/pom.xml b/pom.xml index 15bd0b68..6a8cf6a7 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ 1.5.1-SNAPSHOT 1.6 - 4.4.2_r2 + 4.4.2_r3 19 4.2.0 @@ -28,7 +28,30 @@ - + + + touch-image-view.jar + touch-image-view.jar + 1.0 + system + ${basedir}/libs/touch-image-view.jar + + + + + + + android-support-v4.jar + android-support-v4.jar + 1.0 + system + ${basedir}/third_party/android-support-library/android-support-v4.jar + + android android diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 5ff0de1e..37cee6ad 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -248,5 +248,6 @@ تعذر إكمال العملية، الخادم غير متوفر حسابات + كلمة مرور خاطئة اختيار diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 1709b7cf..ae08fe01 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -12,7 +12,7 @@ Detallar Göndər Ümumi - Yenə + Daha da Hesablar İstifadəçilərin idarəedilməsi Proqram təminatının PİN-i @@ -135,4 +135,5 @@ Aşağıda göstərilən %5$s-də olan daxili və xarici fayl(lar) link edilmiş bu qovluğa yükləmək üçün Hesablar Hesab əlavə et + Yalnış şifrə diff --git a/res/values-bg-rBG/strings.xml b/res/values-bg-rBG/strings.xml index e3dc40ee..9f2cf8bc 100644 --- a/res/values-bg-rBG/strings.xml +++ b/res/values-bg-rBG/strings.xml @@ -264,6 +264,8 @@ Профили Добавяне на профил Сигурна връзка е пренасочена по несигурен път. + Нужна е идентификация + Грешна парола Премести Тук няма нищо. Можеш да добавиш папка! Избери diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 9c881c05..103b6ed6 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -259,5 +259,7 @@ Comptes Afegeix compte La connexió segura està essent redirigida a través d\'una ruta insegura + Es requereix autenticació + Contrasenya incorrecta Escull diff --git a/res/values-cs-rCZ/strings.xml b/res/values-cs-rCZ/strings.xml index 5cb9a370..85e1d793 100644 --- a/res/values-cs-rCZ/strings.xml +++ b/res/values-cs-rCZ/strings.xml @@ -263,6 +263,8 @@ administrátora. Účty Přidat účet Zabezpečené spojení je přesměrováváno nezabezpečenou trasou. + Vyžadováno přihlášení + Nesprávné heslo Přesunout Zde nic není. Můžete přidat adresář! Vybrat diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 6719b854..78a6d787 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -263,6 +263,8 @@ Konti Tilføj konto Sikker forbindelse videredirigeres gennem en usikker rute. + Godkendelse påkrævet + Forkert kodeord Flyt Der er intet her. Du kan tilføje en mappe! Vælg diff --git a/res/values-de-rDE/strings.xml b/res/values-de-rDE/strings.xml index 1d0817ad..ff4caec8 100644 --- a/res/values-de-rDE/strings.xml +++ b/res/values-de-rDE/strings.xml @@ -264,6 +264,8 @@ Konten Konto hinzufügen Die gesicherte Verbindung wird auf eine unsichere Route weitergeleitet. + Authentifizierung benötigt + Falsches Passwort Verschieben Nichts vorhanden. Sie können einen Ordner hinzufügen! Auswählen diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 37b568f7..4448261e 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -264,6 +264,8 @@ Konten Konto hinzufügen Die gesicherte Verbindung wird auf eine unsichere Route weitergeleitet. + Authentifizierung benötigt + Falsches Passwort Verschieben Nichts vorhanden. Du kannst einen Ordner hinzufügen! Auswählen diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 50bcb992..a343b9b7 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -260,5 +260,7 @@ Λογαριασμοί Προσθήκη λογαριασμού Ασφαλής σύνδεση ανακατευθύνεται μέσω μιας μη ασφαλούς διαδρομής. + Απαιτείται πιστοποίηση + Εσφαλμένο συνθηματικό Επιλέξτε diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index a52d6770..3c6fb3f2 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -265,6 +265,8 @@ Accounts Add account Secure connection is redirected through an unsecured route. + Authentication required + Incorrect password Move Nothing in here. You can add a folder! Choose diff --git a/res/values-eo/strings.xml b/res/values-eo/strings.xml index aeffa957..065e59ab 100644 --- a/res/values-eo/strings.xml +++ b/res/values-eo/strings.xml @@ -183,5 +183,7 @@ Eraro okazis dum konekto al la servilo. Kontoj + Aŭtentiĝo nepras + Malĝusta pasvorto Elekti diff --git a/res/values-es-rAR/strings.xml b/res/values-es-rAR/strings.xml index 5deb7186..09fdb53b 100644 --- a/res/values-es-rAR/strings.xml +++ b/res/values-es-rAR/strings.xml @@ -238,5 +238,7 @@ Copiado al portapapeles Cuentas + Autentificación requerida + Clave incorrecta Elegir diff --git a/res/values-es-rMX/strings.xml b/res/values-es-rMX/strings.xml index 218cf281..3772ff7a 100644 --- a/res/values-es-rMX/strings.xml +++ b/res/values-es-rMX/strings.xml @@ -213,5 +213,6 @@ Copiado al portapapeles Cuentas + Contraseña incorrecta Seleccionar diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 31eed66c..7e8e7393 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -264,6 +264,8 @@ Cuentas Agregar cuenta La conexión segura está siendo redirigida por una ruta insegura. + Se necesita autenticación + Contraseña incorrecta Mover Aquí no hay nada. ¡Puede agregar una carpeta! Seleccionar diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index d3eab613..59d6a06f 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -269,6 +269,8 @@ Allpool on loend kohalikest failidest ning serveris asuvatest failidest %5$s, mi Kontod Lisa konto Turvalist ühendust suunatakse läbi turvamata ühenduse. + Autentimine on vajalik + Vale parool Tõsta ümber Siin pole midagi. Sa võid lisada kausta! Vali diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 69453a28..3edade43 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -259,5 +259,7 @@ Mesedez, baimendu berriz Kontuak Gehitu kontua Konexio segurua birbideratu da segurua ez den bide batetik. + Autentikazioa beharrezkoa + Pasahitz okerra Aukeratu diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 38c22b03..200f5e2f 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -229,5 +229,7 @@ برای آپلود در این پوشه این فایل دیگر روی سرور وجود ندارد حساب‌ها + احراز هویت مورد نیاز است + رمز عبور اشتباه است انتخاب کردن diff --git a/res/values-fi-rFI/strings.xml b/res/values-fi-rFI/strings.xml index 7dd989e0..8be7108a 100644 --- a/res/values-fi-rFI/strings.xml +++ b/res/values-fi-rFI/strings.xml @@ -124,6 +124,8 @@ Mediatiedoston luku ei onnistunut Aikakatkaisu toistoa yrittäessä Mediatiedostoa ei voi suoratoistaa + Turvallisuusvirhe yrittäessä toistaa kohdetta %1$s + Odottamaton virhe yrittäessä toistaa kohdetta %1$s Taaksepäin kelaus -painike Toisto tai keskeytys -painike Eteenpäin kelaus -painike @@ -240,6 +242,8 @@ Tilit Lisää tili Salattu yhteys on ohjattu uudelleen salaamatonta reittiä pitkin. + Tunnistautuminen vaaditaan + Väärä salasana Siirrä Täällä ei ole mitään. Voit lisätä kansion! Valitse diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 1e9fcfe6..e67237c1 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -258,6 +258,8 @@ Ce fichier n’est plus disponible sur le serveur Comptes Ajouter un compte + Authentification requise + Mot de passe incorrect Déplacer Choisir diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index afd79371..65344d2f 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -260,6 +260,8 @@ Contas Engadir unha conta A conexión segura está a ser redirixida a través dunha ruta non segura. + Requírese autenticación + Contrasinal incorrecto Mover Escoller diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 7a060eb2..60b52f05 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -2,7 +2,9 @@ Učitaj Datoteke + Nova mapa Postavke + Pošaljite Općenito više Korisnićki računi @@ -15,17 +17,23 @@ Izlaz Nema ničega u ovoj mapi. Pošalji nešto! Preuzimanje + Podijelite vezu Da Ne U redu Prekini upload Odustani Greška + Nepoznata pogreška Izmjena lozinke + Naziv mape Trying to login… Promjeni ime Makni + Pošaljite Korisnićki računi + Potrebna autentikacija + Pogrešna lozinka Izaberi diff --git a/res/values-hu-rHU/strings.xml b/res/values-hu-rHU/strings.xml index 1d81381d..f22d3045 100644 --- a/res/values-hu-rHU/strings.xml +++ b/res/values-hu-rHU/strings.xml @@ -229,5 +229,7 @@ Bemásolva a vágólapra Fiókok + Felhasználóazonosítás szükséges + Hibás jelszó Válasszon diff --git a/res/values-id/strings.xml b/res/values-id/strings.xml index 3d614bf1..f7cfeaa7 100644 --- a/res/values-id/strings.xml +++ b/res/values-id/strings.xml @@ -209,5 +209,7 @@ Kirim Akun + Diperlukan otentikasi + Sandi salah Pilih diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 6b50b1bf..f7132a0b 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -265,6 +265,8 @@ Account Aggiungi account La connessione sicura è rediretta attraverso un percorso non sicuro. + Autenticazione richiesta + Password errata Sposta Qui non c\'è niente. Puoi aggiungere una cartella. Scegli diff --git a/res/values-ja-rJP/strings.xml b/res/values-ja-rJP/strings.xml index 393622b1..d3ce1d48 100644 --- a/res/values-ja-rJP/strings.xml +++ b/res/values-ja-rJP/strings.xml @@ -31,6 +31,8 @@ フィードバック インプリント スマートフォンで %1$s を試してください! + スマートフォンで %1$s を利用してみませんか! +ここからダウンロードできます: %2$s サーバーを確認する サーバーアドレス https://… ユーザー名 @@ -103,6 +105,7 @@ %1$d ファイルのコンテンツを同期できませんでした(%2$d の競合) 一部のローカルファイルが忘れられています %2$s フォルダー内の %1$d ファイルはコピーできませんでした。 + バージョン 1.3.16以降、このデバイスからアップロードされたファイルは、単独のファイルが複数のアカウントと同期する際にデータの損失を防ぐため、ローカルの%1$sフォルダーにコピーされます。 この変更により、このアプリの以前のバージョンでアップロードされたすべてのファイルは%2$sフォルダーにコピーされます。しかしながら、アカウント同期中にはエラーが発生してこの操作が完了しないようになっています。ファイルをこのままにして%3$sへのリンクを削除するか、あるいは%1$sフォルダーにファイルを移動して%4$sへのリンクを維持することができます。 以下のリストにあるのは、ローカルのファイル及びそれらにリンクしている %5$s内のリモートファイルです。 フォルダー %1$s はもう存在しません すべて移動 すべてのファイルを移動しました @@ -238,7 +241,9 @@ %1$s は、ローカルフォルダー %2$s にコピーできませんでした。 申し訳ございません。共有がサーバー上で有効になっていません。 管理者に ご連絡ください。 + 共有できません。ファイルがあるか確認してください。 このファイルまたはフォルダーを共有する際にエラーが発生しました + 共有を解除できません。ファイルがあるか確認してください。 このファイルまたはフォルダーの共有を解除する際にエラーが発生しました 送信 リンクをコピー @@ -259,6 +264,12 @@ ファイルはサーバー上で利用できません アカウント アカウントを追加 + 認証を必要とする + 無効なパスワード 移動 + ファイルが有りません。フォルダを追加してください。 選択 + 移動できません。ファイルがあるか確認してください。 + このファイルまたはフォルダーを移動する際にエラーが発生しました + このファイルを移動 diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index fe3ba38e..3c4f3cd3 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -81,5 +81,6 @@ ផ្ញើ គណនី + ខុស​ពាក្យ​សម្ងាត់ ជ្រើស diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 2628d7a2..b8313dbc 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -214,5 +214,7 @@ 클립보드로 복사됨 계정 + 인증 필요함 + 잘못된 암호 선택 diff --git a/res/values-lt-rLT/strings.xml b/res/values-lt-rLT/strings.xml index f5928856..c88b5cdf 100644 --- a/res/values-lt-rLT/strings.xml +++ b/res/values-lt-rLT/strings.xml @@ -225,5 +225,6 @@ Nukopijuota į talpyklę Paskyros + Neteisingas slaptažodis Pasirinkite diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 5c617212..d7a62301 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -119,5 +119,7 @@ Прати Сметки + Потребна е автентификација + Погрешна лозинка Избери diff --git a/res/values-nb-rNO/strings.xml b/res/values-nb-rNO/strings.xml index 412b2e45..8832e0f7 100644 --- a/res/values-nb-rNO/strings.xml +++ b/res/values-nb-rNO/strings.xml @@ -260,5 +260,7 @@ Kontoer Legg til en konto Sikker tilkobling videresendes gjennom en usikker rute. + Autentisering kreves + Feil passord Velg diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index c7603dae..db983d18 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -268,6 +268,8 @@ Hieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar Accounts Toevoegen account De beveiligde verbinding is omgeleid via een onveilige route. + Authenticatie vereist + Onjuist wachtwoord verplaatsen Niets hier. U kunt een map toevoegen! Kies diff --git a/res/values-nn-rNO/strings.xml b/res/values-nn-rNO/strings.xml index 46d186e0..8c15264f 100644 --- a/res/values-nn-rNO/strings.xml +++ b/res/values-nn-rNO/strings.xml @@ -127,5 +127,6 @@ Send Kontoar + Feil passord Vel diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 43dc9438..ed230ec1 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -260,5 +260,7 @@ Konta Dodaj konto Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy. + Wymagana autoryzacja + Złe hasło Wybierz diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 7ca08807..e57bb183 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -264,6 +264,8 @@ Contas Adicionar uma conta A conexão segura está redirecionada através de uma rota insegura. + Autenticação é requerida + Senha incorreta Mover Nada aqui. Você pode adicionar uma pasta! Escolher diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index c2d1805b..b47c61c7 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -239,6 +239,7 @@ Esta imagem não pode ser mostrada Não foi possível copiar %1$s para a pasta local %2$s Lamentamos mas não é possível partilhar através do seu servidor. Por favor contacte o seu administrador. + Não é possivel partilhar. Por favor verifique se o ficheiro existe Ocorreu um erro enquanto tentava partilhar este ficheiro ou pasta Ocorreu um erro enquanto retirava a partilha deste ficheiro ou pasta Enviar @@ -261,6 +262,8 @@ Contas Adicionar conta Uma ligação segura foi redireccionada por uma rota insegura. + Autenticação necessária + Password errada Mover Não está aqui nada. Pode adicionar uma pasta! Escolha diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 56c5065d..c3e20eee 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -257,5 +257,6 @@ pentru a încărca în acest folder Fișierul nu mai este disponibil pe server Conturi + Parolă greșită Alege diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index f0b38358..abe388ac 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -262,6 +262,8 @@ Учётные записи Добавить учетную запись Безопасное соединение перенаправлено через небезопасный маршрут. + Требуется аутентификация + Неправильный пароль Переместить Выбрать diff --git a/res/values-sk-rSK/strings.xml b/res/values-sk-rSK/strings.xml index 90663360..78e09425 100644 --- a/res/values-sk-rSK/strings.xml +++ b/res/values-sk-rSK/strings.xml @@ -260,6 +260,8 @@ Účty Pridať účet Zabezpečené spojenie je presmerované nezabezpečenou cestou. + Vyžaduje sa overenie + Nesprávne heslo Presunúť Vybrať diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 24875064..53a961f5 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -262,6 +262,8 @@ Računi Dodaj račun Varna povezava je preusmerjena preko ne-varne poti. + Zahtevana je overitev + Napačno geslo Premakni Izbor diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index a34ec3ab..def1b9b8 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -70,5 +70,6 @@ Dërgo Llogarit + Fjalëkalim i gabuar Zgjidh diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 396dbac7..cbe890a9 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -248,5 +248,7 @@ Åtgärden kunte inte slutföras, servern är ej tillgänglig Konton + Autentisering krävs + Fel lösenord Välj diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4572d716..bab28e74 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -265,6 +265,8 @@ Hesaplar Hesap ekle Güvenli bağlantı, güvenli olmayan bir rotaya yönlendiriliyor. + Kimlik doğrulama gerekli + Hatalı parola Taşı Burada bir şey yok. Bir klasör ekleyebilirsiniz! Seç diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 0450eb4a..942948e7 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -248,5 +248,7 @@ 服务器不可用,此操作无法完成 账号 + 需要认证 + 错误密码 选择(&C)... diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 72bb5ece..bd5f2e13 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -67,4 +67,5 @@ 複製連結 帳號 + 密碼錯誤 diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index e2b65082..aca365e0 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -246,5 +246,7 @@ 這個操作無法完成, 無法使用伺服器 帳號 + 必須驗證 + 密碼錯誤 選擇 diff --git a/res/values/strings.xml b/res/values/strings.xml index 13c7bbe3..40910804 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -33,8 +33,7 @@ Imprint "Try %1$s on your smartphone!" - "I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s" - + "I want to invite you to use %1$s on your smartphone!\nDownload here: %2$s" Check Server Server address https://… @@ -286,6 +285,8 @@ Add account Secure connection is redirected through an unsecured route. + Authentication required + Wrong password Move Nothing in here. You can add a folder! Choose diff --git a/src/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/com/owncloud/android/authentication/AuthenticatorActivity.java index 07c4d792..21aab72f 100644 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -50,7 +50,9 @@ import android.view.View.OnFocusChangeListener; import android.view.View.OnTouchListener; import android.view.Window; import android.view.inputmethod.EditorInfo; +import android.webkit.HttpAuthHandler; import android.webkit.SslErrorHandler; +import android.webkit.WebView; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; @@ -77,6 +79,7 @@ import com.owncloud.android.operations.GetServerInfoOperation; import com.owncloud.android.operations.OAuth2GetAccessToken; import com.owncloud.android.services.OperationsService; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; +import com.owncloud.android.ui.dialog.CredentialsDialogFragment; import com.owncloud.android.ui.dialog.IndeterminateProgressDialog; import com.owncloud.android.ui.dialog.SamlWebViewDialog; import com.owncloud.android.ui.dialog.SslUntrustedCertDialog; @@ -125,6 +128,8 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { private static final String UNTRUSTED_CERT_DIALOG_TAG = "UNTRUSTED_CERT_DIALOG"; private static final String SAML_DIALOG_TAG = "SAML_DIALOG"; private static final String WAIT_DIALOG_TAG = "WAIT_DIALOG"; + private static final String CREDENTIALS_DIALOG_TAG = "CREDENTIALS_DIALOG"; + private static final String KEY_AUTH_IS_FIRST_ATTEMPT_TAG = "KEY_AUTH_IS_FIRST_ATTEMPT"; /// parameters from EXTRAs in starter Intent @@ -170,6 +175,8 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { private String mAuthToken = ""; + private boolean mIsFirstAuthAttempt; + /// Identifier of operation in progress which result shouldn't be lost private long mWaitingForOpId = Long.MAX_VALUE; @@ -186,6 +193,8 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_NO_TITLE); + mIsFirstAuthAttempt = true; + // bind to Operations Service mOperationsServiceConnection = new OperationsServiceConnection(); if (!bindService(new Intent(this, OperationsService.class), @@ -210,6 +219,7 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { } else { mAuthTokenType = savedInstanceState.getString(KEY_AUTH_TOKEN_TYPE); mWaitingForOpId = savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID); + mIsFirstAuthAttempt = savedInstanceState.getBoolean(KEY_AUTH_IS_FIRST_ATTEMPT_TAG); } /// load user interface @@ -556,6 +566,9 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { outState.putInt(KEY_AUTH_STATUS_TEXT, mAuthStatusText); outState.putString(KEY_AUTH_TOKEN, mAuthToken); + /// authentication + outState.putBoolean(KEY_AUTH_IS_FIRST_ATTEMPT_TAG, mIsFirstAuthAttempt); + //Log_OC.wtf(TAG, "onSaveInstanceState end" ); } @@ -1684,6 +1697,7 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { dialog.show(ft, UNTRUSTED_CERT_DIALOG_TAG); } + /** * Show untrusted cert dialog */ @@ -1774,5 +1788,33 @@ SsoWebViewClientListener, OnSslUntrustedCertListener { } } - + + /** + * Create and show dialog for request authentication to the user + * @param webView + * @param handler + */ + public void createAuthenticationDialog(WebView webView, HttpAuthHandler handler) { + + // Show a dialog with the certificate info + CredentialsDialogFragment dialog = CredentialsDialogFragment.newInstanceForCredentials(webView, handler); + FragmentManager fm = getSupportFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + ft.addToBackStack(null); + dialog.setCancelable(false); + dialog.show(ft, CREDENTIALS_DIALOG_TAG); + + if (!mIsFirstAuthAttempt) { + Toast.makeText(getApplicationContext(), getText(R.string.saml_authentication_wrong_pass), Toast.LENGTH_LONG).show(); + } else { + mIsFirstAuthAttempt = false; + } + } + + /** + * For retrieving the clicking on authentication cancel button + */ + public void doNegativeAuthenticatioDialogClick(){ + mIsFirstAuthAttempt = true; + } } diff --git a/src/com/owncloud/android/authentication/SsoWebViewClient.java b/src/com/owncloud/android/authentication/SsoWebViewClient.java index 27e1f5b8..fb078bdf 100644 --- a/src/com/owncloud/android/authentication/SsoWebViewClient.java +++ b/src/com/owncloud/android/authentication/SsoWebViewClient.java @@ -24,9 +24,6 @@ import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import com.owncloud.android.lib.common.network.NetworkUtils; -import com.owncloud.android.utils.Log_OC; - import android.content.Context; import android.graphics.Bitmap; import android.net.http.SslCertificate; @@ -43,6 +40,9 @@ import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; +import com.owncloud.android.lib.common.network.NetworkUtils; +import com.owncloud.android.utils.Log_OC; + /** * Custom {@link WebViewClient} client aimed to catch the end of a single-sign-on process @@ -66,6 +66,7 @@ public class SsoWebViewClient extends WebViewClient { private WeakReference mListenerRef; private String mTargetUrl; private String mLastReloadedUrlAtError; + public SsoWebViewClient (Context context, Handler listenerHandler, SsoWebViewClientListener listener) { mContext = context; @@ -86,6 +87,7 @@ public class SsoWebViewClient extends WebViewClient { @Override public void onPageStarted (WebView view, String url, Bitmap favicon) { Log_OC.d(TAG, "onPageStarted : " + url); + view.clearCache(true); super.onPageStarted(view, url, favicon); } @@ -195,6 +197,8 @@ public class SsoWebViewClient extends WebViewClient { @Override public void onReceivedHttpAuthRequest (WebView view, HttpAuthHandler handler, String host, String realm) { Log_OC.d(TAG, "onReceivedHttpAuthRequest : " + host); + + ((AuthenticatorActivity)mContext).createAuthenticationDialog(view, handler); } @Override @@ -229,5 +233,4 @@ public class SsoWebViewClient extends WebViewClient { Log_OC.d(TAG, "shouldOverrideKeyEvent : " + event); return false; } - } diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 27113686..e726efad 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -66,15 +66,12 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa private static final String TAG = "OwnCloudPreferences"; - private static final String PREVIOUS_ACCOUNT_KEY = "ACCOUNT"; - private DbHandler mDbHandler; private CheckBoxPreference pCode; //private CheckBoxPreference pLogging; //private Preference pLoggingHistory; private Preference pAboutApp; - private Account mPreviousAccount = null; private PreferenceCategory mAccountsPrefCategory = null; private final Handler mHandler = new Handler(); private String mAccountName; @@ -91,13 +88,8 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa ActionBar actionBar = getSherlock().getActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle(R.string.actionbar_settings); - if (savedInstanceState != null) { - mPreviousAccount = savedInstanceState.getParcelable(PREVIOUS_ACCOUNT_KEY); - } else { - mPreviousAccount = AccountUtils.getCurrentOwnCloudAccount(this); - } - // Load the accounts category for adding the list of accounts mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category"); @@ -454,8 +446,23 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa for (Account a : accounts) { CheckBoxPreference p = (CheckBoxPreference) findPreference(a.name); if (key.equals(a.name)) { + boolean accountChanged = !p.isChecked(); p.setChecked(true); - AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), a.name); + AccountUtils.setCurrentOwnCloudAccount( + getApplicationContext(), + a.name + ); + if (accountChanged) { + // restart the main activity + Intent i = new Intent( + Preferences.this, + FileDisplayActivity.class + ); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } else { + finish(); + } } else { p.setChecked(false); } @@ -495,22 +502,4 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } - @Override - protected void onPause() { - if (this.isFinishing()) { - Account current = AccountUtils.getCurrentOwnCloudAccount(this); - if ((mPreviousAccount == null && current != null) - || (mPreviousAccount != null && !mPreviousAccount.equals(current))) { - // the account set as default changed since this activity was - // created - - // restart the main activity - Intent i = new Intent(this, FileDisplayActivity.class); - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(i); - } - } - super.onPause(); - } - } diff --git a/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java b/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java new file mode 100644 index 00000000..080316b8 --- /dev/null +++ b/src/com/owncloud/android/ui/dialog/CredentialsDialogFragment.java @@ -0,0 +1,152 @@ +/* ownCloud Android client application + * Copyright (C) 2014 ownCloud Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +package com.owncloud.android.ui.dialog; + +import com.actionbarsherlock.app.SherlockDialogFragment; +import com.owncloud.android.R; +import com.owncloud.android.authentication.AuthenticatorActivity; + +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.AlertDialog.Builder; +import android.content.DialogInterface; +import android.os.Bundle; +import android.text.InputType; +import android.view.WindowManager.LayoutParams; +import android.webkit.HttpAuthHandler; +import android.webkit.WebView; +import android.widget.EditText; +import android.widget.LinearLayout; + + + +/** + * Dialog to input authentication credentials + * + */ +public class CredentialsDialogFragment extends SherlockDialogFragment + implements DialogInterface.OnClickListener { + + private WebView mWebView = null; + private HttpAuthHandler mHandler = null; + + private EditText mUsernameET; + private EditText mPasswordET; + + private String mUsernameStr; + private String mPasswordStr; + + + /** + * Public factory method to create new CredentialsDialogFragment instances. + * @param webView WebView that is being loaded + * @param handler HttpAuthHandler + * @return Dialog ready to show + */ + public static CredentialsDialogFragment newInstanceForCredentials(WebView webView, HttpAuthHandler handler) { + if (handler == null) { + throw new IllegalArgumentException("Trying to create instance with parameter handler == null"); + } + CredentialsDialogFragment frag = new CredentialsDialogFragment(); + frag.mHandler = handler; + frag.mWebView = webView; + return frag; + } + + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + // Create field for username + mUsernameET = new EditText(getSherlockActivity()); + mUsernameET.setHint(getSherlockActivity().getText(R.string.auth_username)); + + // Create field for password + mPasswordET = new EditText(getSherlockActivity()); + mPasswordET.setHint(getSherlockActivity().getText(R.string.auth_password)); + mPasswordET.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + + // Prepare LinearLayout for dialog + LinearLayout ll = new LinearLayout(getSherlockActivity()); + ll.setOrientation(LinearLayout.VERTICAL); + ll.addView(mUsernameET); + ll.addView(mPasswordET); + + ll.requestFocus(); + + setRetainInstance(true); + + Builder authDialog = new AlertDialog + .Builder(getSherlockActivity()) + .setTitle(getSherlockActivity().getText(R.string.saml_authentication_required_text)) + .setView(ll) + .setCancelable(false) + .setPositiveButton(R.string.common_ok, this) + .setNegativeButton(R.string.common_cancel, this); + + Dialog d = authDialog.create(); + d.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); + return d; + } + + + @Override + public void onPause() { + super.onPause(); + // Due to the use of setRetainInstance(true) for keep the dialog over the rest of dialogs, + // we need to save the inputs text for being injected in onResume() + mUsernameStr = mUsernameET.getText().toString(); + mPasswordStr = mPasswordET.getText().toString(); + } + + + @Override + public void onResume() { + super.onResume(); + mUsernameET.setText(mUsernameStr); + mPasswordET.setText(mPasswordStr); + } + + + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == AlertDialog.BUTTON_POSITIVE) { + + String username = mUsernameET.getText().toString(); + String password = mPasswordET.getText().toString(); + + // Proceed with the authentication + mHandler.proceed(username, password); + + } else if (which == AlertDialog.BUTTON_NEGATIVE) { + mWebView.stopLoading(); + ((AuthenticatorActivity)getActivity()).doNegativeAuthenticatioDialogClick(); + } + + dialog.dismiss(); + } + + + @Override + public void onDestroyView() { + if (getDialog() != null && getRetainInstance()) + getDialog().setDismissMessage(null); + super.onDestroyView(); + } + +}