

こんにちは。  
私は自作クラス「NotificationLisetener(*1)」を作り、最近までは動いていたのですがいつの間にか動かなくなりました。例えばNotification
accessを切り替えてもonListenerConnected()などが呼ばれません。  
一旦、何もしない「NLStest(*2)」を作り正しく動くことを確認した後、それを(*1)にコピペしたのですが動きません。  
それぞれしっかりとManifestも変更して確かめました。

なぜ(*1)は動かないのでしょうか。

試したこと

  * プロジェクトをビルドし直す
  * 別のNotificationListenerを作り動くことを確認
  * Notification accessの切り替え。NLStestはちゃんと切り替わってました。

Android開発は始めたばかりなので至らないところがあると思いますがよろしくお願いいたします。

(*1)

[code]

    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
    public class NotificationListener extends NotificationListenerService {
    
        private static final String TAG = "myDEBUG(refactor)";
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            final int notifId = 4;
    
            // 通知をタップしたき起動させる設定を施す
            Intent showTaskIntent = new Intent(getApplicationContext(), MainActivity.class);
            showTaskIntent.setAction(Intent.ACTION_MAIN);
            showTaskIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            showTaskIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent contentIntent = PendingIntent.getActivity(
                    getApplicationContext(),
                    0,
                    showTaskIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
    
            // ステータスバーへ表示
            Notification.Builder builder = new Notification.Builder(getApplicationContext());
            builder.setContentTitle("TANSU");
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_tansu);
            builder.setLargeIcon(bitmap);
            builder.setSmallIcon(R.drawable.icon_tansu);
            builder.setWhen(System.currentTimeMillis());
            builder.setContentIntent(contentIntent);
            startForeground(notifId, builder.build());
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.i(TAG, "onStartCommand");
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onDestroy()
        {
            super.onDestroy();
        }
    
        @Override
        public IBinder onBind(Intent intent)
        {
            return super.onBind(intent);
        }
    
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onNotificationPosted(StatusBarNotification sbn) {
        }
    
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onNotificationRemoved(StatusBarNotification sbn) {
            Log.i(TAG, "onRemoved()------------------------------------");
        }
    
        @Override
        public void onListenerConnected()
        {
            Log.i(TAG, "NLS is on connected!");
        }
    
        @Override
        public void onListenerDisconnected()
        {
            Log.i(TAG, "NLS is on disconnected...");
        }
    }
    
[/code]

(*2)

[code]

    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
    public class NLStest extends NotificationListenerService {
    
        private static final String TAG = "myDEBUG(refactor)";
    
        @Override
        public void onCreate() {
            super.onCreate();
    
            final int notifId = 4;
    
            // 通知をタップしたき起動させる設定を施す
            Intent showTaskIntent = new Intent(getApplicationContext(), MainActivity.class);
            showTaskIntent.setAction(Intent.ACTION_MAIN);
            showTaskIntent.addCategory(Intent.CATEGORY_LAUNCHER);
            showTaskIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent contentIntent = PendingIntent.getActivity(
                    getApplicationContext(),
                    0,
                    showTaskIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
    
            // ステータスバーへ表示
            Notification.Builder builder = new Notification.Builder(getApplicationContext());
            builder.setContentTitle("TANSU");
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_tansu);
            builder.setLargeIcon(bitmap);
            builder.setSmallIcon(R.drawable.icon_tansu);
            builder.setWhen(System.currentTimeMillis());
            builder.setContentIntent(contentIntent);
            startForeground(notifId, builder.build());
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            Log.i(TAG, "onStartCommand");
            return super.onStartCommand(intent, flags, startId);
        }
    
        @Override
        public void onDestroy()
        {
            super.onDestroy();
        }
    
        @Override
        public IBinder onBind(Intent intent)
        {
            return super.onBind(intent);
        }
    
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onNotificationPosted(StatusBarNotification sbn) {
        }
    
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onNotificationRemoved(StatusBarNotification sbn) {
            Log.i(TAG, "onRemoved()------------------------------------");
        }
    
        @Override
        public void onListenerConnected()
        {
            Log.i(TAG, "NLS is on connected!");
        }
    
        @Override
        public void onListenerDisconnected()
        {
            Log.i(TAG, "NLS is on disconnected...");
        }
    }
    
[/code]


CC BY-SA 3.0
2017-12-19T04:46:59.977
40372
2018-01-06T00:40:43.107
2017-12-19T07:19:36.040
19110
26705
question
android
Android7.0，NotificationListenerServiceが動かなくなりました


以下の本家の方にある解決策を試してみてはいかがでしょうか。

<https://stackoverflow.com/questions/33530807/why-is-this-
notificationlistenerservice-not-working>

キャッシュの問題で動作しなくなる、ということがあるようです。

Android Studio上で、そのNotificationLisetenerについて  
メニューからRefactor -> Renameで、  
適当な名前に変えて（NotificationLisetener2など。ダサいですが）  
動作するか確認してみてください。


CC BY-SA 3.0
2018-01-05T05:14:46.240
40735
2018-01-05T05:14:46.240
26887
40372
answer


renameで動くことはこちらでも確認しておりました。


CC BY-SA 3.0
2018-01-05T12:56:35.520
40754
2018-01-06T00:40:43.107
2018-01-06T00:40:43.107
26705
26705
40372
answer