From c041ddb69068d1fb696767374143bdf94c8b1744 Mon Sep 17 00:00:00 2001 From: Tal Hacohen Date: Sun, 5 Mar 2017 19:16:54 +0100 Subject: [PATCH 1/2] Add webview activity to handle etesync link. --- app/src/main/AndroidManifest.xml | 7 + .../syncadapter/ui/WebViewActivity.java | 169 ++++++++++++++++++ app/src/main/res/layout/activity_webview.xml | 34 ++++ app/src/main/res/values/strings.xml | 4 + 4 files changed, 214 insertions(+) create mode 100644 app/src/main/java/com/etesync/syncadapter/ui/WebViewActivity.java create mode 100644 app/src/main/res/layout/activity_webview.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 83d4ab59..33ecec35 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -183,6 +183,13 @@ android:exported="true" android:label="@string/debug_info_title"> + + + " + + "" + + "" + + "
" + + "" + getString(R.string.loading_error_content) + + "" + + ""; + + mWebView.loadDataWithBaseURL("about:blank", htmlData, "text/html", "UTF-8", null); + mWebView.invalidate(); + } + + private boolean shouldOverrideUrl(Uri uri) { + if (Constants.webUri.getHost().equals(uri.getHost())) { + if (uri.getQueryParameter(QUERY_KEY_EMBEDDED) != null) { + return false; + } else { + uri = addQueryParams(uri); + mWebView.loadUrl(uri.toString()); + return true; + } + + } else { + startActivity(new Intent(Intent.ACTION_VIEW, uri)); + return true; + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + mWebView.saveState(outState); + } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (mWebView.canGoBack()) { + mWebView.goBack(); + return true; + } + } + return super.onKeyDown(keyCode, event); + } +} diff --git a/app/src/main/res/layout/activity_webview.xml b/app/src/main/res/layout/activity_webview.xml new file mode 100644 index 00000000..e0b1a53d --- /dev/null +++ b/app/src/main/res/layout/activity_webview.xml @@ -0,0 +1,34 @@ + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fe976715..ceb6670d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -225,4 +225,8 @@ EteSync: Connection security EteSync has encountered an unknown certificate. Do you want to trust it? + + Loading... + Loading Error + Refresh From 8c9ec3bcc7a7be4d14b7bd47bcafc6d49c782ab8 Mon Sep 17 00:00:00 2001 From: Tal Hacohen Date: Sun, 5 Mar 2017 19:38:10 +0100 Subject: [PATCH 2/2] Replace all etesync links to open in the webview activity. --- .../java/com/etesync/syncadapter/NotificationHelper.java | 3 ++- .../com/etesync/syncadapter/ui/AccountsActivity.java | 5 ++--- .../etesync/syncadapter/ui/StartupDialogFragment.java | 9 +++++---- .../com/etesync/syncadapter/ui/setup/LoginActivity.java | 3 ++- .../syncadapter/ui/setup/LoginCredentialsFragment.java | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.java b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.java index bbc08c8c..e165a3d9 100644 --- a/app/src/main/java/com/etesync/syncadapter/NotificationHelper.java +++ b/app/src/main/java/com/etesync/syncadapter/NotificationHelper.java @@ -13,6 +13,7 @@ import android.support.v7.app.NotificationCompat; import com.etesync.syncadapter.journalmanager.Exceptions; import com.etesync.syncadapter.ui.AccountSettingsActivity; import com.etesync.syncadapter.ui.DebugInfoActivity; +import com.etesync.syncadapter.ui.WebViewActivity; import java.util.logging.Level; @@ -95,7 +96,7 @@ public class NotificationHelper { if (e instanceof Exceptions.UnauthorizedException) { detailsIntent = new Intent(this, AccountSettingsActivity.class); } else if (e instanceof Exceptions.UserInactiveException) { - startActivity(new Intent(Intent.ACTION_VIEW, Constants.dashboard)); + WebViewActivity.openUrl(this, Constants.dashboard); return; } else { detailsIntent = new Intent(this, DebugInfoActivity.class); diff --git a/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.java b/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.java index 75a13488..7f02f241 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/AccountsActivity.java @@ -93,10 +93,10 @@ public class AccountsActivity extends AppCompatActivity implements NavigationVie startActivity(new Intent(Intent.ACTION_VIEW, Constants.webUri)); break; case R.id.nav_guide: - startActivity(new Intent(Intent.ACTION_VIEW, Constants.helpUri)); + WebViewActivity.openUrl(this, Constants.helpUri); break; case R.id.nav_faq: - startActivity(new Intent(Intent.ACTION_VIEW, Constants.faqUri)); + WebViewActivity.openUrl(this, Constants.faqUri); break; case R.id.nav_report_issue: startActivity(new Intent(Intent.ACTION_VIEW, Constants.reportIssueUri)); @@ -110,5 +110,4 @@ public class AccountsActivity extends AppCompatActivity implements NavigationVie drawer.closeDrawer(GravityCompat.START); return true; } - } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java index 6ad9c74a..7ad6589f 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/StartupDialogFragment.java @@ -22,15 +22,16 @@ import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - import com.etesync.syncadapter.BuildConfig; import com.etesync.syncadapter.Constants; import com.etesync.syncadapter.R; import com.etesync.syncadapter.model.ServiceDB; import com.etesync.syncadapter.model.Settings; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; + import lombok.Cleanup; public class StartupDialogFragment extends DialogFragment { diff --git a/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginActivity.java b/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginActivity.java index c955b283..a5cda9f7 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginActivity.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginActivity.java @@ -17,6 +17,7 @@ import android.view.MenuItem; import com.etesync.syncadapter.App; import com.etesync.syncadapter.Constants; import com.etesync.syncadapter.R; +import com.etesync.syncadapter.ui.WebViewActivity; /** * Activity to initially connect to a server and create an account. @@ -71,6 +72,6 @@ public class LoginActivity extends AppCompatActivity { } public void showHelp(MenuItem item) { - startActivity(new Intent(Intent.ACTION_VIEW, Constants.helpUri)); + WebViewActivity.openUrl(this, Constants.helpUri); } } diff --git a/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginCredentialsFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginCredentialsFragment.java index 267069c6..974b5ea7 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginCredentialsFragment.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/setup/LoginCredentialsFragment.java @@ -21,6 +21,7 @@ import android.widget.EditText; import com.etesync.syncadapter.Constants; import com.etesync.syncadapter.R; +import com.etesync.syncadapter.ui.WebViewActivity; import com.etesync.syncadapter.ui.widget.EditPassword; public class LoginCredentialsFragment extends Fragment { @@ -53,8 +54,7 @@ public class LoginCredentialsFragment extends Fragment { @Override public void onClick(View v) { Uri createUri = Constants.registrationUrl.buildUpon().appendQueryParameter("email", editUserName.getText().toString()).build(); - Intent intent = new Intent(Intent.ACTION_VIEW, createUri); - startActivity(intent); + WebViewActivity.openUrl(getContext(), createUri); } });