2

私の目標:ファイルを並行してダウンロードし、ファイルのダウンロードが完了すると通知を受け取ります。

これらの通知は、をクリックしたときにアクティビティを起動することを想定しています。アクティビティは、を介して一意のパラメータを取得しますputExtra

問題は、そのアクティビティを起動するたびに異なる値を設定できないことです。

通知バーを介して起動されているアクティビティが起動されるたびに、まだ起動されていない余分なアクティビティ(通知バーにまだ表示されているアクティビティ)が破棄されます。

すべての通知を独自のパラメーターで保持するにはどうすればよいですか?

これが私のコードです:

if (messagesManager == null)
{
    messagesManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}

notification = new Notification(R.drawable.icon, message, System.currentTimeMillis());

// for launch activity
Intent intent = new Intent(context, DialogActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("fileName", fileName); //- this is where i put my extra's!!
intent.putExtra("onSdcard", onSdcard);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

notification.setLatestEventInfo(context, "DownloadManager", message, contentIntent);
notification.flags = notification.FLAG_AUTO_CANCEL;
int noticeId = generateNotificationId(requestId);
messagesManager.notify(noticeId, notification);

これがダイアログアクティビティです。

protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    Intent i = getIntent();
    boolean onSdcard = i.getBooleanExtra("onSdcard", true);
    String fileName = i.getStringExtra("fileName");
    ...
}

ここの別の投稿に書かれているように、このテクニックを使おうとしましたが、うまくいきませんでした。

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
4

1 に答える 1

0

リンクされた複製を確認してください、

あなたは2つのものが必要です

  • アクション文字列を追加する必要があります
  • アクション文字列は一意である必要があります。おそらくタイムスタンプを追加するとよいでしょう。
于 2010-07-06T14:56:35.380 に答える