जांचें कि क्या उपयोगकर्ता ने मेरे ऐप पर अधिसूचना लिस्टनर पहुंच प्रदान की है

मैं अधिसूचना श्रोता सेटिंग्स खोलने के लिए इस कोड का उपयोग कर रहा हूँ:

startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"));

मैं यह जांचना चाहता हूं कि उपयोगकर्ता ने मेरे ऐप को अधिकृत किया है या नहीं। मैंने पहले ही यह जांचने की कोशिश की है कि क्या मेरी अधिसूचना लिस्टनर सेवा चल रही है, लेकिन ऐसा लगता है कि यह सिस्टम द्वारा रुक गया और फिर से शुरू हो गया है (भले ही मैं START_STICKY लौटाता हूं)।

8
मैंने इस समाधान का उपयोग किया और यह ठीक काम करता है: stackoverflow.com/a/33871952/5053585
जोड़ा लेखक Hazlo8, स्रोत

2 उत्तर

ऐसा करने का एकमात्र सही तरीका सुरक्षित सेटिंग्स की जांच करना है:

ComponentName cn = new ComponentName(context, YourNotificationListenerService.class);
String flat = Settings.Secure.getString(context.getContentResolver(), "enabled_notification_listeners");
final boolean enabled = flat != null && flat.contains(cn.flattenToString());
18
जोड़ा
मैं वास्तव में आपको एक कुकी देना चाहता हूँ! ग्रेसियस।
जोड़ा लेखक Olayinka, स्रोत
यह काम। आप इस तरह से अपनी एक्सेसिबिलिटी सेवा भी देख सकते हैं, लेकिन "enable_accessibility_services" को सेटिंग्स.Secure.getString() से गुजरकर। दोनों तार सेटिंग में स्थिरांक के रूप में सेट हैं। सुरक्षित, लेकिन कुछ कारणों से अधिसूचनाओं के लिए एक छिपा हुआ है।
जोड़ा लेखक Steve Blackwell, स्रोत

मैं गलत था, जांच रहा हूं कि सेवा चल रही है या नहीं:

    private boolean isNLServiceRunning() {
        ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);

        for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
             if (NLService.class.getName().equals(service.service.getClassName())) {
                  return true;
             }
        }

        return false;
    }
8
जोड़ा
यदि आप अनुमति को अनचेक करते हैं, तो प्रक्रिया चलती रहती है। तो यह बुलेटप्रूफ नहीं है, लेकिन मुझे एक और तरीका नहीं मिला है।
जोड़ा लेखक black, स्रोत
अगर मैं अनुमति को अनचेक करता हूं, तो मेरी सेवा नष्ट हो जाती है। तो उपर्युक्त उत्तर मेरे लिए पूरी तरह से काम करता है।
जोड़ा लेखक MrMaffen, स्रोत