15

Android: パッケージのインストール後に通知バーから通知をキャンセルしようとしています。私がやっていることは次のとおりです。

public class MyBroadcastReceiver extends BroadcastReceiver {

    private static final String TAG = "MyBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
            Uri data = intent.getData();
            //some code goes here
            //get the id of the notification to cancel in some way
            notificationhelper._completeNotificationManager.cancel(id);     
        }
    }
}

どこ

public class notificationhelper {
    public static NotificationManager _completeNotificationManager = null;

    public void complete() {        
        if (_completeNotificationManager == null)
            _completeNotificationManager = (NotificationManager) _context.getSystemService(Context.NOTIFICATION_SERVICE);
            
        Notification notification = new Notification(
            R.drawable.notification,
            _context.getString(R.string.notification),
            System.currentTimeMillis());
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.flags |= Notification.FLAG_NO_CLEAR;
        _completeNotificationManager.notify(TEXT, id, notification);
    }
}

しかし、notificationhelper._completeNotificationManager.cancel(id)動作しません。私は使用しようとしましたがnotificationhelper._completeNotificationManager.cancelAll();、動作します。私が間違っていることは何ですか?

4

6 に答える 6

10

これはおそらく現時点では無関係ですが、同じ問題を扱っている私のような人々が解決策を見つけることができるように、ここに投稿する必要があります.

うまくいかない場合NotificationManager.cancel()は、通知の ID を変更してみてください。

notificationManager.notify(NOTIFICATION_ID, notification);

NOTIFICATION_ID1 から [RANDOM_NUMBER]に変更すると、魔法のように機能し始めました。1 はどういうわけか予約されていると思いますが、どのドキュメントにもメモはありません...

もちろん、同じ NOTIFICATION_ID を使用してキャンセルするようにしてください。

notificationManager.cancel(NOTIFICATION_ID);
于 2013-08-29T17:50:44.110 に答える