Refresh OAUTH tokens

Refs #17
pull/72/head
M66B 6 years ago
parent 4d7c3e9c88
commit 846a39eb78

@ -75,6 +75,9 @@ public interface DaoAccount {
@Query("UPDATE account SET state = :state WHERE id = :id")
int setAccountState(long id, String state);
@Query("UPDATE account SET password = :password WHERE id = :id")
int setAccountPassword(long id, String password);
@Query("UPDATE account SET error = :error WHERE id = :id")
int setAccountError(long id, String error);

@ -57,6 +57,9 @@ public interface DaoIdentity {
@Query("UPDATE identity SET state = :state WHERE id = :id")
int setIdentityState(long id, String state);
@Query("UPDATE identity SET password = :password WHERE id = :id")
int setIdentityPassword(long id, String password);
@Query("UPDATE identity SET error = :error WHERE id = :id")
int setIdentityError(long id, String error);

@ -251,6 +251,12 @@ public class FragmentAccount extends FragmentEx {
if (TextUtils.isEmpty(password))
throw new Throwable(getContext().getString(R.string.title_no_password));
// Refresh token
if (id >= 0 && auth_type == Helper.AUTH_TYPE_GMAIL) {
password = Helper.refreshToken(getContext(), "com.google", user, password);
args.putString("password", password);
}
// Check IMAP server / get folders
List<EntityFolder> folders = new ArrayList<>();
Properties props = MessageHelper.getSessionProperties(auth_type);
@ -327,6 +333,9 @@ public class FragmentAccount extends FragmentEx {
btnCheck.setEnabled(true);
pbCheck.setVisibility(View.GONE);
// Refreshed token
tilPassword.getEditText().setText(args.getString("password"));
tvIdle.setVisibility(args.getBoolean("idle") ? View.GONE : View.VISIBLE);
final Collator collator = Collator.getInstance(Locale.getDefault());
@ -762,10 +771,6 @@ public class FragmentAccount extends FragmentEx {
String name = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
String type = data.getStringExtra(AccountManager.KEY_ACCOUNT_TYPE);
String authTokenType = null;
if ("com.google".equals(type))
authTokenType = "oauth2:https://mail.google.com/";
AccountManager am = AccountManager.get(getContext());
Account[] accounts = am.getAccountsByType(type);
Log.i(Helper.TAG, "Accounts=" + accounts.length);
@ -773,7 +778,7 @@ public class FragmentAccount extends FragmentEx {
if (name.equals(account.name)) {
am.getAuthToken(
account,
authTokenType,
Helper.getAuthTokenType(type),
new Bundle(),
getActivity(),
new AccountManagerCallback<Bundle>() {

@ -267,6 +267,10 @@ public class FragmentIdentity extends FragmentEx {
if (TextUtils.isEmpty(replyto))
replyto = null;
// Refresh token
if (id >= 0 && auth_type == Helper.AUTH_TYPE_GMAIL)
password = Helper.refreshToken(getContext(), "com.google", user, password);
// Check SMTP server
if (synchronize) {
Properties props = MessageHelper.getSessionProperties(auth_type);

@ -19,6 +19,8 @@ package eu.faircode.email;
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
@ -170,6 +172,30 @@ public class Helper {
}
}
static String refreshToken(Context context, String type, String name, String current) {
try {
AccountManager am = AccountManager.get(context);
Account[] accounts = am.getAccountsByType(type);
for (Account account : accounts)
if (name.equals(account.name)) {
Log.i(Helper.TAG, "Refreshing token");
am.invalidateAuthToken(type, current);
String refreshed = am.blockingGetAuthToken(account, getAuthTokenType(type), true);
Log.i(Helper.TAG, "Refreshed token");
return refreshed;
}
} catch (Throwable ex) {
Log.w(TAG, ex + "\n" + Log.getStackTraceString(ex));
}
return current;
}
static String getAuthTokenType(String type) {
if ("com.google".equals(type))
return "oauth2:https://mail.google.com/";
return null;
}
static boolean isPlayStoreInstall(Context context) {
if (false && BuildConfig.DEBUG)
return true;

@ -117,6 +117,12 @@ public class SearchDataSource extends PositionalDataSource<TupleMessageEx> imple
folder = db.folder().getFolder(fid);
account = db.account().getAccount(folder.account);
// Refresh token
if (account.auth_type == Helper.AUTH_TYPE_GMAIL) {
account.password = Helper.refreshToken(context, "com.google", account.user, account.password);
db.account().setAccountPassword(account.id, account.password);
}
Properties props = MessageHelper.getSessionProperties(account.auth_type);
Session isession = Session.getInstance(props, null);

@ -391,6 +391,12 @@ public class ServiceSynchronize extends LifecycleService {
if (debug)
System.setProperty("mail.socket.debug", "true");
// Refresh token
if (account.auth_type == Helper.AUTH_TYPE_GMAIL) {
account.password = Helper.refreshToken(this, "com.google", account.user, account.password);
db.account().setAccountPassword(account.id, account.password);
}
Properties props = MessageHelper.getSessionProperties(account.auth_type);
final Session isession = Session.getInstance(props, null);
isession.setDebug(debug);
@ -971,6 +977,12 @@ public class ServiceSynchronize extends LifecycleService {
return;
}
// Refresh token
if (ident.auth_type == Helper.AUTH_TYPE_GMAIL) {
ident.password = Helper.refreshToken(this, "com.google", ident.user, ident.password);
db.identity().setIdentityPassword(ident.id, ident.password);
}
// Create session
Properties props = MessageHelper.getSessionProperties(ident.auth_type);
final Session isession = Session.getInstance(props, null);

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -70,6 +70,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -86,7 +87,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -70,6 +70,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -86,7 +87,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -70,6 +70,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -86,7 +87,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -70,6 +70,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -86,7 +87,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -70,6 +70,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -86,7 +87,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Brug webvisning</string>
<string name="title_advanced_customtabs">I stedet for <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome tilpasset faner</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Dit navn</string>
<string name="title_identity_email">Din email adresse</string>
<string name="title_identity_reply_to">Svar til adresse</string>
@ -70,7 +71,7 @@
<string name="title_port">Portnummer</string>
<string name="title_user">Brugernavn</string>
<string name="title_password">Adgangskode</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Vejledning</string>
<string name="title_store_sent">Gem sendte beskeder (aktivér kun hvis nødvendigt)</string>
<string name="title_interval">Afstem/hold i live interval (minutter)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port-Nummer</string>
<string name="title_user">Benutzername</string>
<string name="title_password">Passwort</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -23,7 +23,7 @@
</plurals>
<string name="title_notification_failed">\'%1$s\' a échoué</string>
<string name="menu_setup">Configuration</string>
<string name="menu_answers">Answers</string>
<string name="menu_answers">Réponses</string>
<string name="menu_operations">Opérations</string>
<string name="menu_legend">Légende</string>
<string name="menu_faq">FAQ</string>
@ -54,6 +54,7 @@
<string name="title_advanced_webview">Utiliser WebView</string>
<string name="title_advanced_customtabs">Au lieu des <a href="https://developer.chrome.com/multidevice/android/customtabs">onglets personnalisés Chrome</a></string>
<string name="title_advanced_debug">Débogage</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Votre nom</string>
<string name="title_identity_email">Votre adresse e-mail</string>
<string name="title_identity_reply_to">Répondre à l\'adresse</string>
@ -70,7 +71,7 @@
<string name="title_port">Numéro de port</string>
<string name="title_user">Nom dutilisateur</string>
<string name="title_password">Mot de passe</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Stocker les messages envoyés (à activer si nécessaire)</string>
<string name="title_interval">Intervalle de consultation/requête (minutes)</string>
@ -148,9 +149,9 @@
<string name="title_search">Rechercher</string>
<string name="title_search_hint">Rechercher sur le serveur</string>
<string name="title_searching">Recherche de \'%1$s\'</string>
<string name="title_answer_reply">Standard answer</string>
<string name="title_answer_name">Answer name</string>
<string name="title_answer_text">Answer text</string>
<string name="title_answer_reply">Réponse standard</string>
<string name="title_answer_name">Nom de la réponse</string>
<string name="title_answer_text">Texte de la réponse</string>
<string name="title_legend_cc">Cc/Cci</string>
<string name="title_legend_attachment">Pièce jointe</string>
<string name="title_legend_synchronize">Synchroniser</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Usa WebView</string>
<string name="title_advanced_customtabs">Al posto di <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Il tuo nome</string>
<string name="title_identity_email">Il tuo indirizzo email</string>
<string name="title_identity_reply_to">Rispondi all\'indirizzo</string>
@ -70,7 +71,7 @@
<string name="title_port">Numero porta</string>
<string name="title_user">Nome utente</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Conserva i messaggi inviati (abilita solo se necessario)</string>
<string name="title_interval">Intervallo di poll/keep-alive (minuti)</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -50,6 +50,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -66,7 +67,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -50,6 +50,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -66,7 +67,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Użyj WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Twój adres e-mail</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Numer portu</string>
<string name="title_user">Nazwa użytkownika</string>
<string name="title_password">Hasło</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instrukcje</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Número da porta</string>
<string name="title_user">Nome de usuário</string>
<string name="title_password">Senha</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -58,6 +58,7 @@
<string name="title_advanced_webview">Folosește WebView</string>
<string name="title_advanced_customtabs">în loc de <a href="https://developer.chrome.com/multidevice/android/customtabs">tab Chrome personalizat</a></string>
<string name="title_advanced_debug">Depanare</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Numele dumneavoastră</string>
<string name="title_identity_email">Adresa dvs. de e-mail</string>
<string name="title_identity_reply_to">Răspuns la adresa</string>
@ -74,7 +75,7 @@
<string name="title_port">Număr port</string>
<string name="title_user">Nume utilizator</string>
<string name="title_password">Parolă</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Stochează mesajele trimise (activați doar la nevoie)</string>
<string name="title_interval">Interval sincronizare (minute)</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -58,6 +58,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -74,7 +75,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -54,6 +54,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -70,7 +71,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -62,6 +62,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -78,7 +79,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -50,6 +50,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -66,7 +67,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -50,6 +50,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -66,7 +67,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

@ -50,6 +50,7 @@
<string name="title_advanced_webview">Use WebView</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
@ -66,7 +67,7 @@
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Authorize</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Poll/keep-alive interval (minutes)</string>

Loading…
Cancel
Save