Push-уведомление об открытии нового действия

#java #android #push-notification #push #onesignal

#java #Android #push-уведомление #толкать #onesignal

Вопрос:

Я использую службу push-уведомлений OneSignal. Когда пользователь нажимает на push-уведомление, автоматически открывается новое действие под названием «Main2Activity.java «. Когда пользователь нажимает на уведомление, код работает и открывает новую активность. Но если я отправляю другое push-уведомление, когда пользователь нажимает на уведомление, приложение сначала открывает «MainActivity.java «. Только когда пользователь нажимает предыдущую кнопку на телефоне, он открывает «MainActicity2.java «. Это мой код

 import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.onesignal.OSNotificationAction;
import com.onesignal.OSNotificationOpenResu<
import com.onesignal.OneSignal;

import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OneSignal.startInit(this)
                .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
                .init();
    }

    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 customKey;

            if (data != null) {
                customKey = data.optString("customkey", null);
                if (customKey != null) {
                    Log.i("OneSignalExample", "customkey set with value: "   customKey);
                    Toast.makeText(MainActivity.this,"My Custom Key is:" customKey,Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(), Main2Activity.class);
                         intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);

                    startActivity(intent);


                }
            }

        }
    }
}
  

Спасибо!

Ответ №1:

Когда вы открываете действие из уведомления, вы помещаете некоторые данные, которые идентифицируют пользователя, пришедшего из уведомления

И когда пользователь нажимает кнопку «Назад» из mainactivity2, затем проверяет, пришел ли пользователь из уведомления или любого другого места, если пришел из уведомления, затем закройте приложение.

Добавьте приведенный ниже код в свой menifest.xml

 <activity ..
      android:launchMode= "singleInstance" />
  

Комментарии:

1. Хорошо, но проблема в том, что когда пользователь нажимает на уведомление, оно открывает MainActivity

2. Затем добавьте эту строку в свой файл манифеста android: launchMode =»singleTop», чтобы ваше приложение не открывало несколько экземпляров activity

3. Я не понял, как это сделать с помощью кода. Не могли бы вы мне помочь, пожалуйста?

4. Ваша активность открыта несколько раз, это правда??

5. Можете ли вы проверить сейчас