Всплывающее окно Android Webview для внешних ссылок не работает - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть веб-приложение, которое работает нормально, но теперь я хочу, чтобы внешние ссылки открывались в новом действии / макете для сохранения основного экземпляра.приложение вылетает, когда я нажимаю на внешнюю ссылку, такую ​​как общий доступ к Facebook.

Я уже создал новый макет и занятие под названием popup, а в основном занятии у меня есть несколько кодов для запуска этих всплывающих окон.

Мой код в основной деятельности:

webView.setWebChromeClient(new WebChromeClient() {

WebView newWebView = new WebView(HomeActivity.this);

   @Override

public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
final WebView newWebView = findViewById(R.id.webview_hidden);
newWebView.setWebViewClient(new WebViewClient() {

   @Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

Intent intent = new Intent(mContext,PopupActivity.class);
intent.putExtra("URL",url);
startActivity(intent);
newWebView.destroy(); 

     }
});
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
     }
});

Мой код в PopupActivity.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class PopupActivity extends Activity {

    private WebView newWebview;

    @Override

    protected void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);
        newWebview = findViewById(R.id.webview_hidden);
        WebSettings newWebSettings = newWebview.getSettings();
        newWebSettings.setJavaScriptEnabled(true);
        newWebSettings.setAllowFileAccess(true);
        newWebSettings.setAllowFileAccess(true);
        newWebSettings.setAllowContentAccess(true);
        newWebSettings.setDomStorageEnabled(true);
        newWebSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        newWebview.loadUrl("URL");
        setContentView(R.layout.activity_popup);
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int width = dm.widthPixels;
        int height = dm.heightPixels;
        getWindow().setLayout((int) (width*.9),(int) (height*.8));
        Intent intent = getIntent();
        String url = intent.getStringExtra("URL");

    }
}


Приложение работает нормально, нопадает, когда я нажимаю на внешнюю ссылку, чтобы активировать всплывающее окно

Logcat

2019-09-24 22:32:25.761 3421-3421/com.app.pmall W/System.err:     at android.os.MessageQueue.next(MessageQueue.java:336)
2019-09-24 22:32:25.762 3421-3421/com.app.pmall W/System.err:     at android.os.Looper.loop(Looper.java:174)
2019-09-24 22:32:25.762 3421-3421/com.app.pmall W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7116)
2019-09-24 22:32:25.762 3421-3421/com.app.pmall W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2019-09-24 22:32:25.763 3421-3421/com.app.pmall W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
2019-09-24 22:32:25.764 3421-3421/com.app.pmall W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:925)
2019-09-24 22:32:25.789 3421-3421/com.app.pmall A/chromium: [FATAL:jni_android.cc(249)] Please include Java exception stack in crash report
2019-09-24 22:32:25.852 3421-3749/com.app.pmall D/eglCodecCommon: setVertexArrayObject: set vao to 2 (2) 0 0
2019-09-24 22:32:28.634 3421-3421/com.app.pmall A/libc: Fatal signal 5 (SIGTRAP), code -6 (SI_TKILL) in tid 3421 (com.app.pmall), pid 3421 (com.app.pmall)
...