diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java index ccfdfc1b..1c36d6f2 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java @@ -79,6 +79,7 @@ import com.github.dfa.diaspora_android.R; import com.github.dfa.diaspora_android.data.AppSettings; import com.github.dfa.diaspora_android.data.PodUserProfile; import com.github.dfa.diaspora_android.listener.WebUserProfileChangedListener; +import com.github.dfa.diaspora_android.receivers.OpenExternalLinkReceiver; import com.github.dfa.diaspora_android.ui.ContextMenuWebView; import com.github.dfa.diaspora_android.ui.CustomWebViewClient; import com.github.dfa.diaspora_android.util.CustomTabHelpers.BrowserFallback; @@ -135,6 +136,7 @@ public class MainActivity extends AppCompatActivity private PodUserProfile podUserProfile; private final Handler uiHandler = new Handler(); private CustomWebViewClient webViewClient; + private OpenExternalLinkReceiver brOpenExternalLink; private Snackbar snackbarExitApp; private Snackbar snackbarNewNotification; private Snackbar snackbarNoInternet; @@ -204,10 +206,19 @@ public class MainActivity extends AppCompatActivity } else if (appSettings.wasProxyEnabled()) { resetProxy(); } + + brOpenExternalLink = new OpenExternalLinkReceiver(this); } private void setupUI(Bundle savedInstanceState) { Log.i(App.TAG, "MainActivity.setupUI()"); + ButterKnife.bind(this); + if (webviewPlaceholder.getChildCount() != 0) { + Log.v(App.TAG, "remove child views from webViewPlaceholder"); + webviewPlaceholder.removeAllViews(); + } else { + Log.v(App.TAG, "webViewPlaceholder had no child views"); + } boolean newWebView = (webView == null); if(newWebView) { Log.v(App.TAG, "WebView was null. Create new one."); @@ -218,10 +229,7 @@ public class MainActivity extends AppCompatActivity } else { Log.v(App.TAG, "Reuse old WebView to avoid reloading page"); } - ButterKnife.bind(this); - if (webviewPlaceholder.getChildCount() != 0) { - webviewPlaceholder.removeAllViews(); - } + Log.v(App.TAG, "Add WebView to placeholder"); webviewPlaceholder.addView(webView); // Setup toolbar @@ -734,27 +742,6 @@ public class MainActivity extends AppCompatActivity } }; - private final BroadcastReceiver brOpenExternalLink = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - String url = intent.getStringExtra(EXTRA_URL); - if(url != null) { - CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(); - if(Build.VERSION.SDK_INT >= 23) { - intentBuilder.setToolbarColor(getResources().getColor(R.color.colorPrimary, getTheme())); - } else { - intentBuilder.setToolbarColor(getResources().getColor(R.color.colorPrimary)); - } - intentBuilder.setStartAnimations(MainActivity.this, android.R.anim.slide_in_left, android.R.anim.fade_out); - intentBuilder.setExitAnimations(MainActivity.this, android.R.anim.fade_in, android.R.anim.slide_out_right); - Bitmap backButtonIcon = BitmapFactory.decodeResource(getResources(), - R.drawable.ic_arrow_back_white_24px); - intentBuilder.setCloseButtonIcon(backButtonIcon); - CustomTabActivityHelper.openCustomTab(MainActivity.this, intentBuilder.build(), Uri.parse(url), new BrowserFallback()); - } - } - }; - @Override protected void onStart() { super.onStart(); diff --git a/app/src/main/java/com/github/dfa/diaspora_android/receivers/OpenExternalLinkReceiver.java b/app/src/main/java/com/github/dfa/diaspora_android/receivers/OpenExternalLinkReceiver.java new file mode 100644 index 00000000..f3faf58a --- /dev/null +++ b/app/src/main/java/com/github/dfa/diaspora_android/receivers/OpenExternalLinkReceiver.java @@ -0,0 +1,47 @@ +package com.github.dfa.diaspora_android.receivers; + +import android.app.Activity; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; +import android.os.Build; +import android.support.customtabs.CustomTabsIntent; + +import com.github.dfa.diaspora_android.R; +import com.github.dfa.diaspora_android.activity.MainActivity; +import com.github.dfa.diaspora_android.util.CustomTabHelpers.BrowserFallback; +import com.github.dfa.diaspora_android.util.CustomTabHelpers.CustomTabActivityHelper; + +/** + * BroadcastReceiver that opens + * Created by vanitas on 11.09.16. + */ +public class OpenExternalLinkReceiver extends BroadcastReceiver { + private final Activity parent; + + public OpenExternalLinkReceiver(Activity parent) { + this.parent = parent; + } + + @Override + public void onReceive(Context context, Intent intent) { + String url = intent.getStringExtra(MainActivity.EXTRA_URL); + if(url != null) { + CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder(); + if(Build.VERSION.SDK_INT >= 23) { + intentBuilder.setToolbarColor(parent.getResources().getColor(R.color.colorPrimary, parent.getTheme())); + } else { + intentBuilder.setToolbarColor(parent.getResources().getColor(R.color.colorPrimary)); + } + intentBuilder.setStartAnimations(parent, android.R.anim.slide_in_left, android.R.anim.fade_out); + intentBuilder.setExitAnimations(parent, android.R.anim.fade_in, android.R.anim.slide_out_right); + Bitmap backButtonIcon = BitmapFactory.decodeResource(parent.getResources(), + R.drawable.ic_arrow_back_white_24px); + intentBuilder.setCloseButtonIcon(backButtonIcon); + CustomTabActivityHelper.openCustomTab(parent, intentBuilder.build(), Uri.parse(url), new BrowserFallback()); + } + } +} diff --git a/app/src/main/res/layout/webview.xml b/app/src/main/res/layout/webview.xml index aa258767..35d12bc4 100644 --- a/app/src/main/res/layout/webview.xml +++ b/app/src/main/res/layout/webview.xml @@ -1,7 +1,7 @@ + android:orientation="vertical" android:layout_width="fill_parent" + android:layout_height="fill_parent">