Wenn ich einen externen Link von Browser/Mail anklicke, öffnet sich meine Webview-App (diese Arbeit).android - externen Link in der Webview App öffnen
..und jetzt das Problem: Wenn die App geschlossen ist, wird die Verknüpfung korrekt geöffnet. Wenn die App bereits geöffnet ist, wird die Verknüpfung nicht geöffnet.
Ich dachte an das Fixieren mit "shouldOverrideUrlLoading", aber die Funktion wird nie aufgerufen.
---- Startcode ----
public class MainActivity erstreckt Aktivität {
private WebView mWebView;
private Bundle savedInstanceState;
/**
* Dichiariamo l'attributo di classe url in cui
* salviamo l'indirizzo web che aprirà la webview
*/
private String url = "https://asp-center.fgp.biz?app=1&id=";
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (savedInstanceState != null && intent.getData() != null) {
mWebView.restoreState(savedInstanceState);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//carichiamo la webview dentro il layout specificato
mWebView = (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setLoadsImagesAutomatically(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
//permette di gestire i _blank
mWebView.getSettings().setSupportMultipleWindows(false);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
WebView.HitTestResult result = view.getHitTestResult();
String data = result.getExtra();
Log.d("DATA", "" + data);
// view.loadUrl(data);
WebView newWebView = new WebView(view.getContext());
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(view);
resultMsg.sendToTarget();
return true;
}
});
mWebView.requestFocusFromTouch();
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient());
// prendo l'id del dispositivo che mi aiuta a controllare se è attivo l'auto-accesso (non sono richieste credenziali) per il suddetto dispositivo
String android_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
//scrivo del testo di debug
TextView t = (TextView)findViewById(R.id.textView);
t.setText("start");
//imposto la url di default per l'apertura della app
String url = "http://fgp.intranet/ggweb/gol_home_mobile.php?app=1&id_device=" + android_id;
//controllo se l'apertura della app è stata fatta da un link esterno (come le mail di notifica richieste)
if(intent.getData() != null) {
//se è stata aperta esternamente, apro il link passato
url = intent.getData().toString();
t.setText(url);
//url2 = intent.getData().toString();
} else {
}
//carichiamo la url nella webview
mWebView.loadUrl(url);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mWebView.saveState(outState);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
TextView t = (TextView)findViewById(R.id.textView);
t.setText("shouldOverrideUrlLoading!");
System.out.println("here");
if (Uri.parse(url).getHost().equals("fgp.intranet")) {
// This is my web site, so do not override; let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
}
/**
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
TextView t = (TextView)findViewById(R.id.textView);
t.setText("bbbbbbbb!");
String url=request.getUrl().toString();
view.loadUrl("https://www.google.com");
return true;
}
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
{
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
vor einigen Monaten wurde ich die ähnliche Frage beantworten. Siehe https://stackoverflow.com/questions/42367358/webview-on-android-7-0-doesnt-render-page/42367622#42367622 –
Mögliche Duplikate von [WebView auf Android 7.0+ rated Seite] (https://stackoverflow.com/questions/42367358/webview-on-android-7-0-doesnt-render-page) –