2013-08-07 2 views
16

내 서비스가 활성화되어 있는지 어떻게 알 수 있습니까? 그래서 내 서비스가 활성화되어 있지 않은지 확인한 다음 사용자에게 사용 가능하게 설정하도록 알려줍니다.내게 필요한 옵션 서비스가 활성화되었는지 검색

감사합니다.

+0

[Android : 특정 AccessibilityService가 사용 설정되었는지 어떻게 확인하나요?] (http://stackoverflow.com/questions/5081145/android-how-do-you-check-if-a-particular-accessibilityservice) -is-enabled) – 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 getint 메소드가 예외를 찾을 수없는 예외를 throw하면 어떻게됩니까? 이 경우 우리는 무엇을 할 수 있습니다. KITKAT 에뮬레이터에서 해봤지만이 설정은 예외를 발견하지 못했지만 설정은 거기에 있습니다. 이 경우에 사용할 수있는 다른 방법이 있습니까? – dirtydexter

+0

감사합니다. 예상대로 작동합니다. 마지막 줄에서 getPackageName()을 사용하는 것이 더 좋습니다. String service = mContext.getPackageName() + "/"+ mContext.getPackageName() + ".YourAccessibilityService"; – user207064

관련 문제