У меня был кто-то, кто создал очень простое приложение WebView для меня с уведомлениями OneSignal.Приложение запускается с заставкой и двумя кнопками на главной странице, которая отправляет пользователей на разные URL-адреса - в моем примере ниже Google и Stack Overflow.
Работает нормально, но я пытаюсь внести изменения воткрывайте определенный URL-адрес при касании уведомления и не можете определить, каким образом, несмотря на большое чтение здесь и документацию OneSignal.В качестве последнего средства я решил опубликовать свой код, чтобы посмотреть, сможет ли кто-нибудь помочь этому новичку в кодировании приложений!
По сути, мне нужно исправить код launchURL в самом низу класса ExampleNotificationOpenedHandler.Я отправляю URL как дополнительные данные через OneSignal, и приложение правильно читает их в переменной launchURL (когда я просматриваю logcat).
public class App extends Activity {
private static final String WEB_URL1 = "https://google.com";
private static final String WEB_URL2 = "https://stackoverflow.com";
View ll_Web;
WebView webView;
SwipeRefreshLayout mSwipeRefreshLayout;
RelativeLayout splash, home;
View ll_pView, pView;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client;
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
private GoogleApiClient client2;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
OneSignal.startInit(this)
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.init();
setContentView(R.layout.main);
ll_Web = findViewById(R.id.ll_Web);
webView = (WebView) findViewById(R.id.webView);
splash = (RelativeLayout) findViewById(R.id.splash);
home = (RelativeLayout) findViewById(R.id.home);
ll_pView = (View) findViewById(R.id.ll_pView);
pView = (View) findViewById(R.id.pView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(false);
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(pView.getLayoutParams());
lp.weight = progress;
pView.setLayoutParams(lp);
ll_pView.setVisibility(progress == 100 ? View.GONE : View.VISIBLE);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
mSwipeRefreshLayout.setRefreshing(false);
ll_pView.setVisibility(View.GONE);
super.onPageFinished(view, url);
}
});
mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.activity_main_swipe_refresh_layout);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
webView.reload();
}
});
findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
webView.clearHistory();
webView.loadUrl(WEB_URL1);
home.setVisibility(View.GONE);
ll_Web.setVisibility(View.VISIBLE);
}
});
findViewById(R.id.btn2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
webView.clearHistory();
webView.loadUrl(WEB_URL2);
home.setVisibility(View.GONE);
ll_Web.setVisibility(View.VISIBLE);
}
});
(new Handler()).postDelayed(new Runnable() {
@Override
public void run() {
home.setVisibility(View.VISIBLE);
splash.setVisibility(View.GONE);
}
}, 3 * 1000);
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
}
@Override
public void onBackPressed() {
if (ll_Web.getVisibility() == View.VISIBLE) {
if (webView.canGoBack() && !webView.getUrl().equals(WEB_URL1) && !webView.getUrl().equals(WEB_URL2)) {
webView.goBack();
} else {
home.setVisibility(View.VISIBLE);
if (Build.VERSION.SDK_INT < 18) {
webView.clearView();
} else {
webView.loadUrl("about:blank");
}
ll_Web.setVisibility(View.GONE);
}
} else
super.onBackPressed();
}
/**
* ATTENTION: This was auto-generated to implement the App Indexing API.
* See https://g.co/AppIndexing/AndroidStudio for more information.
*/
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
//client2.connect();
}
@Override
public void onStop() {
super.onStop();
}
class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
// This fires when a notification is opened by tapping on it.
@Override
public void notificationOpened(OSNotificationOpenResult result) {
OSNotificationAction.ActionType actionType = result.action.type;
JSONObject data = result.notification.payload.additionalData;
String launchURL;
if (data != null) {
launchURL = data.optString("launchURL");
if (launchURL != null) {
Log.i("OneSignalExample", "launchURL value: " + launchURL);
// How do I send the LaunchURL to open webview???
// webView.loadUrl(launchURL);
}
}
}
}
}
Я не писал этот код, но любая помощь будетоценили.