2013-08-07 8 views
16

मैं सोच रहा था कि मेरी सेवा कैसे सक्षम है या नहीं, मैं कैसे पता लगा सकता हूं। तो मैं जांच सकता हूं कि मेरी सेवा सक्षम नहीं है, तो उपयोगकर्ता को इसे सक्षम करने के लिए कहें।पता करें कि मेरी पहुंच सेवा सक्षम है

धन्यवाद

+0

संभावित डुप्लिकेट [एंड्रॉइड: आप कैसे जांचते हैं कि कोई विशेष एक्सेसिबिलिटी सेवा सक्षम है] (http://stackoverflow.com/questions/5081145/android-how-do-you-check-if-a-particular-accessibilityservice -इस-सक्षम) – Sam

उत्तर

49

नीचे अगर आपके उपयोग सेवा सक्षम है या नहीं की जाँच करने के विधि है।

नोट: अपनी सेवा के साथ YOURAccessibilityService का मूल्य बदलें।

// To check if service is enabled 
private boolean isAccessibilitySettingsOn(Context mContext) { 
    int accessibilityEnabled = 0; 
    final String service = getPackageName() + "/" + YOURAccessibilityService.class.getCanonicalName(); 
    try { 
     accessibilityEnabled = Settings.Secure.getInt(
       mContext.getApplicationContext().getContentResolver(), 
       android.provider.Settings.Secure.ACCESSIBILITY_ENABLED); 
     Log.v(TAG, "accessibilityEnabled = " + accessibilityEnabled); 
    } catch (Settings.SettingNotFoundException e) { 
     Log.e(TAG, "Error finding setting, default accessibility to not found: " 
       + e.getMessage()); 
    } 
    TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':'); 

    if (accessibilityEnabled == 1) { 
     Log.v(TAG, "***ACCESSIBILITY IS ENABLED*** -----------------"); 
     String settingValue = Settings.Secure.getString(
       mContext.getApplicationContext().getContentResolver(), 
       Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); 
     if (settingValue != null) { 
      mStringColonSplitter.setString(settingValue); 
      while (mStringColonSplitter.hasNext()) { 
       String accessibilityService = mStringColonSplitter.next(); 

       Log.v(TAG, "-------------- > accessibilityService :: " + accessibilityService + " " + service); 
       if (accessibilityService.equalsIgnoreCase(service)) { 
        Log.v(TAG, "We've found the correct setting - accessibility is switched on!"); 
        return true; 
       } 
      } 
     } 
    } else { 
     Log.v(TAG, "***ACCESSIBILITY IS DISABLED***"); 
    } 

    return false; 
} 

और इस विधि कॉल करने के:

if (!isAccessibilitySettingsOn(getApplicationContext())) { 
    startActivity(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)); 
} 

यह जाँच करें और पहुंच-योग्यता सेटिंग का शुभारंभ यदि सक्षम नहीं होंगे।

+0

एक आकर्षण की तरह काम करना, धन्यवाद –

+0

@Pankaj क्या होगा यदि गेटिंट विधि सेटिंग्स को फेंक रहा है अपवाद नहीं मिला है। हम उस मामले में क्या कर सकते हैं। मैंने इसे किटकैट एमुलेटर पर आज़माया और यह इस सेटिंग को अपवाद नहीं मिला लेकिन सेटिंग वहां है। क्या कोई अन्य तरीका है जिसे हम इस मामले में उपयोग कर सकते हैं। – dirtydexter

+0

धन्यवाद, अपेक्षित के रूप में काम कर रहा है। लाइन फाइनल स्ट्रिंग सेवा = mContext.getPackageName() + "/" + mContext.getPackageName() + ".YourAccessibilityService" पर getPackageName() का उपयोग करना बेहतर है; – user207064

संबंधित मुद्दे