我认识到与此类似的问题已在其他地方解决。但是,这是我的第一个使用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);
...
答案 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);
}