将URL从推送通知传递到WebView

时间:2018-10-25 15:58:20

标签: java android

我认识到与此类似的问题已在其他地方解决。但是,这是我的第一个使用Java的项目,但是我无法完成这项工作。

我的Android应用具有WebView。在正常使用期间打开应用程序时,将打开静态URL(mydomain.com)。但是,我有时会通过OneSignal发送包含不同链接的推送通知。我希望这些内容也可以在WebView中打开。

根据我在此处找到的建议,我正在通过OneSignal中的“附加数据”功能发送自定义URL。

这是我到目前为止所写的内容。如何使launchURL命令可以访问webView.loadURL()变量?现在,我在该行收到一个错误:“无法解析符号。”

我应该注意,launchURL的值确实显示在我的日志中,因此实际上是在接收和处理数据。我只需要使其可用于webView.loadURL()。

再次请您原谅我明显的无知。我主要是PHP人士,所以这对我来说是一个新领域。

protected void onCreate(Bundle savedInstanceState) {

        class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {

            public String launchURL;

            @Override
            public void notificationOpened(OSNotificationOpenResult result) {
                OSNotificationAction.ActionType actionType = result.action.type;
                JSONObject data = result.notification.payload.additionalData;


                if (data != null) {
                    launchURL = data.optString("launchURL");
                    if (launchURL != null) {
                        Log.i("OneSignalExample", "launchURL value: " + launchURL);
                    }
                }

            }
        }

        // OneSignal Initialization
        OneSignal.startInit(this)
                .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                .unsubscribeWhenNotificationsAreDisabled(true)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .init();

        if(isNetworkStatusAvailable (getApplicationContext())) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);           
            WebView webView = (WebView) findViewById(R.id.web1);               
            webView.loadUrl(launchURL);

         ...

2 个答案:

答案 0 :(得分:0)

public String launchURL;部分之后,尝试将protected void onCreate....移出课堂

或者只是将网络视图加载移动到设置launchURL的通知侦听器中

答案 1 :(得分:0)

我能够解决此问题,如下所示。显然ExampleNotificationOpenedHander前缀是必需的。

   if (ExampleNotificationOpenedHandler.launchURL == null){
                webView.loadUrl("https://example.com");
            }else{
                webView.loadUrl(ExampleNotificationOpenedHandler.launchURL);
            }