Я использую onesignal sdk для запуска действия при уведомлении. Нажмите:
public class MainActivity extends AppCompatActivity {
// adding webview variable
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// OneSignal Initialization
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
// initializing webview by matching with id in activity_main.xml
mWebView = (WebView) findViewById(R.id.activity_main_webview);
// Enable Javascript
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Setting up webview & webchrome client
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient());
// if url is passed via onesignal notification as via putextra, open that url else open homepage
String url = getIntent().getStringExtra("url");
if (url != null) {
mWebView.loadUrl(url);
} else {
mWebView.loadUrl("https://www.google.com");
}
OneSignal.startInit(this).setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() {
@Override
public void notificationOpened(OSNotificationOpenResult result) {
JSONObject data = result.notification.payload.additionalData;
String launchURL;
if (data != null) {
launchURL = data.optString("launchURL", null);
// Log.d("Debug", "Launch URL: " + launchURL);
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.putExtra("url", launchURL);
startActivity(intent);
} else {
Log.d("Debug", result.notification.payload.toJSONObject().toString());
}
}
}).init();
}
}
При нажатии на уведомление запускается активность моего приложения, а затем действие, инициированное кодом startActivity(intent)
, с дополнительными данными, введенными с использованием * 1005. * начинается, вызывая 2 экземпляра.
Я попытался добавить флаги FLAG_ACTIVITY_REORDER_TO_FRONT
& FLAG_ACTIVITY_CLEAR_TOP
, но они запускают только начальное основное действие, действие, инициированное startActivity(intent)
, не запускается с этими флагами.
Как сделать только 1 экземпляр действия для запуска (тот, который инициируется startActivity(intent)
) при нажатии на уведомление?