Передача данных в приложение с помощью уведомления - PullRequest
0 голосов
/ 09 июня 2011

Я создал два приложения.

Одно приложение является получателем сообщений ( app1 ), а другое приложение ( app2 ) предназначено для выполнения других задач на основе сообщения.

Первое приложение (app1) получает сообщение, создает уведомление и отображается вверху. Когда пользователь щелкает уведомление, оно вызывает другое приложение (app2) для выполнения других задач на основе сообщения.

Если приложение (app2) не запущено, его следует запустить. Если он уже запущен, необходимо отобразить экземпляр и выполнить задачи.

Я использую следующий код:

protected void displayNotification() {

        Notification notification = new Notification(icon, tickerText, when);
        Bundle xtra = new Bundle();

        Intent ntent = new Intent(Intent.ACTION_SEND);
        ntent.setClassName("com.example.mytestapp",
                "com.example.mytestapp.MainActivity");

        xtra.putString("id", "8610B0DD");
        xtra.putParcelable("message", msg);

        ntent.putExtras(xtra);
        ntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        ntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
                ntent, PendingIntent.FLAG_UPDATE_CURRENT);
        notification.setLatestEventInfo(context, contentTitle, contentText,
                pendingIntent);
        final int button_Click = 1;
        nm.notify(button_Click, notification);
}

Это отлично работает, но создает несколько экземпляров другого приложения (app2).

Есть ли способ предотвратить создание нескольких копий?

Ответы [ 2 ]

0 голосов
/ 24 июня 2011

Отлично работает с этим кодом.

            Intent ntent = new Intent();
            ntent.setClassName("com.project.test",
                    "com.project.test.MainActivity");
            ntent.setType("vnd.android-dir/mms-sms");

            ntent.putExtras(bundle);

            int flags = Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_SINGLE_TOP
                    | Intent.FLAG_ACTIVITY_CLEAR_TOP;
            ntent.setFlags(flags);

            //startActivity(ntent);
0 голосов
/ 14 июня 2011

Вы пробовали установить "singleTask" или "singleInstance" для режима запуска действия? http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

...