У меня есть веб-приложение, которое работает нормально, но теперь я хочу, чтобы внешние ссылки открывались в новом действии / макете для сохранения основного экземпляра.приложение вылетает, когда я нажимаю на внешнюю ссылку, такую как общий доступ к 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)