Android: WebView не загружает URL-адреса push-уведомлений после первого - PullRequest
0 голосов
/ 12 октября 2018

Я использую push-уведомления OneSignal для создания простого веб-приложения.

В каждом уведомлении есть URL-адрес.Если щелкнуть уведомление во время работы приложения, веб-просмотр правильно загружает содержащийся URL.Это может быть сделано несколько раз, поэтому, если есть три push-уведомления, их можно загружать одно за другим, щелкая их из панели уведомлений.

Однако, когда приложение не запущено и уведомление нажата,приложение открывается и загружает URL-адрес уведомления, как и ожидалось, но по какой-то причине не может загрузить последующие push-уведомления.

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

Вот код:

ApplicationClass:

public class ApplicationClass extends Application {


@Override
public void onCreate() {
    super.onCreate();

    // OneSignal Initialization
    OneSignal.startInit(this)
            .setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() {
                @Override
                public void notificationOpened(OSNotificationOpenResult result) {
                    String launchURL=result.notification.payload.launchURL;
                    if (launchURL != null) {

                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.putExtra("url", launchURL);
                        intent.putExtra("check", 1);
                        startActivity(intent);
                    }
                    else
                    {
                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                        intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                    }
                }
            })
            .init();
}

}

Активность:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    splash = findViewById(R.id.imageView);

    browser = (WebView) findViewById(R.id.webview);
    if (savedInstanceState == null) {
        browser.loadUrl(homepage);
    }
    browser.setWebViewClient(new WebViewClient() {
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(request.getUrl().toString());
            return false;
        }
    });

    browser.getSettings().setJavaScriptEnabled(true);
    browser.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);

    //notification
    Intent notificationIntent = getIntent();
    Bundle notificationBundle = notificationIntent.getExtras();

    if(notificationBundle!=null)
    {
        notificationURL =(String) notificationBundle.get("url");
        browser.loadUrl(notificationURL);
    }
    else
    {
        browser.loadUrl(homepage);
    }

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            splash.setVisibility(View.GONE);
        }
    }, 6 * 1000);
}
...