0

アプリにリダイレクトされる通知バーに通知があります。これが私のやり方です。

private void sendNotificationToDevice(String message)
 {
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        int icon = R.drawable.ic_launcher;
        CharSequence tickerText = message;
        long when = System.currentTimeMillis();

        @SuppressWarnings("deprecation")
        Notification notification = new Notification(icon, tickerText, when);
        Context context = getApplicationContext();
        CharSequence contentTitle = "Landstar";
        CharSequence contentText = message;
        Intent intent= new Intent(context, Login.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        //PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent,  PendingIntent.FLAG_UPDATE_CURRENT | Notification.FLAG_AUTO_CANCEL);
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.defaults |= Notification.DEFAULT_VIBRATE;


        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

        notification.flags |= Notification.FLAG_AUTO_CANCEL;

        mNotificationManager.notify(1111, notification);
 }

ユーザーが通知バーの通知をクリックしたときに、どこでイベントを処理できるかを知りたいです。onResume で処理するのは好きではありません。それに別れてほしい。通知をクリックしたときの動作がアプリに戻ります。しかし、私が期待しているものではありません。アプリがバックグラウンドにあるときにバックグラウンド処理を行っています。そのため、通知をクリックしたときにアプリにそのプロセスを反映させたいと考えています。何か案は?ありがとう!

4

1 に答える 1

0

このコードは、通知送信関数呼び出しの後に配置されます

Intent broadcastIntent = new Intent();
broadcastIntent.setAction("RECEIVED_ACTION");
broadcastIntent.putExtra("msg", message);
ctx.sendBroadcast(broadcastIntent);

ブロードキャストレシーバーを使用すると、アプリに直接アクセスできます。

以下のコードはあなたの活動で呼び出されます。// BroadcastReceiver は onReceive() イベントをオーバーライドする必要があります。プライベート BroadcastReceiver gcmReceiver = new BroadcastReceiver() {

    private String broadcastMessage;

    @Override
    public void onReceive(Context context, Intent intent) {

        broadcastMessage = intent.getExtras().getString("gcm");

        if (broadcastMessage != null && viewAdminLimit != null) {
            // display our received message

        }

    }
};

アクティビティで以下のメソッドを呼び出します

public void onResume() {

        IntentFilter gcmFilter = new IntentFilter();
        gcmFilter.addAction("RECEIVED_ACTION");
        viewAdminLimit.registerReceiver(gcmReceiver, gcmFilter);

    }

public void onPause() {

        viewAdminLimit.unregisterReceiver(gcmReceiver);

    }

このコードがお役に立てば幸いです。

于 2013-09-12T07:26:38.117 に答える