protected boolean shouldGuardActivityOptions() { return androidManifest.getMinSdkVersion() < MIN_SDK_WITH_ACTIVITY_OPTIONS; } }
protected boolean hasFragmentInClasspath() { boolean fragmentExistsInSdk = androidManifest.getMinSdkVersion() >= MIN_SDK_WITH_FRAGMENT_SUPPORT; return fragmentExistsInSdk && elementUtils.getTypeElement(CanonicalNameConstants.FRAGMENT) != null; }
private boolean shouldUseContextMethod() { return getEnvironment().getAndroidManifest().getMinSdkVersion() >= minSdkWithMethod; }
public void getChildFragmentManagerMethodIsAvailable(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { if (!methodIsAvailableIn(supportFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + ", update your support library version."); } } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { if (!methodIsAvailableIn(androidxFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.ANDROIDX_FRAGMENT + ", update your support library version."); } } else if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment) && environment().getAndroidManifest().getMinSdkVersion() < 17) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.FRAGMENT + " (from API 17). Increment 'minSdkVersion' or use " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT + "."); } } }
@SuppressWarnings("checkstyle:parameternumber") private IJExpression createSpecialInjection(EComponentHolder holder, String fieldTypeQualifiedName, JFieldRef serviceRef, int apiLevel, String apiLevelName, AbstractJClass serviceClass, String injectionMethodName, boolean invocationRequiresContext) { if (getEnvironment().getAndroidManifest().getMinSdkVersion() >= apiLevel) { return createNormalInjection(holder, fieldTypeQualifiedName, serviceRef); } else { JInvocation serviceClassInvocation = serviceClass.staticInvoke(injectionMethodName); if (invocationRequiresContext) { serviceClassInvocation.arg(holder.getContextRef()); } if (isApiOnClasspath(apiLevelName)) { IJExpression condition = getClasses().BUILD_VERSION.staticRef("SDK_INT").gte(getClasses().BUILD_VERSION_CODES.staticRef(apiLevelName)); IJExpression normalInjection = createNormalInjection(holder, fieldTypeQualifiedName, serviceRef); return JOp.cond(condition, normalInjection, serviceClassInvocation); } else { return serviceClassInvocation; } } }
protected boolean shouldGuardActivityOptions() { return androidManifest.getMinSdkVersion() < MIN_SDK_WITH_ACTIVITY_OPTIONS; } }
protected boolean hasFragmentInClasspath() { boolean fragmentExistsInSdk = androidManifest.getMinSdkVersion() >= MIN_SDK_WITH_FRAGMENT_SUPPORT; return fragmentExistsInSdk && elementUtils.getTypeElement(CanonicalNameConstants.FRAGMENT) != null; }
private boolean shouldUseContextMethod() { return getEnvironment().getAndroidManifest().getMinSdkVersion() >= minSdkWithMethod; }
public void getChildFragmentManagerMethodIsAvailable(Element element, ElementValidation validation) { boolean childFragment = annotationHelper.extractAnnotationParameter(element, "childFragment"); if (childFragment) { TypeElement enclosingElement = (TypeElement) element.getEnclosingElement(); TypeElement fragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.FRAGMENT); TypeElement supportFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.SUPPORT_V4_FRAGMENT); TypeElement androidxFragment = annotationHelper.getElementUtils().getTypeElement(CanonicalNameConstants.ANDROIDX_FRAGMENT); if (supportFragment != null && annotationHelper.isSubtype(enclosingElement, supportFragment)) { if (!methodIsAvailableIn(supportFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + ", update your support library version."); } } else if (androidxFragment != null && annotationHelper.isSubtype(enclosingElement, androidxFragment)) { if (!methodIsAvailableIn(androidxFragment, "getChildFragmentManager")) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.ANDROIDX_FRAGMENT + ", update your support library version."); } } else if (fragment != null && annotationHelper.isSubtype(enclosingElement, fragment) && environment().getAndroidManifest().getMinSdkVersion() < 17) { validation.addError(element, "The 'childFragmentManager' parameter only can be used if the getChildFragmentManager() method is available in " + CanonicalNameConstants.FRAGMENT + " (from API 17). Increment 'minSdkVersion' or use " + CanonicalNameConstants.SUPPORT_V4_FRAGMENT + " or " + CanonicalNameConstants.ANDROIDX_FRAGMENT + "."); } } }
@SuppressWarnings("checkstyle:parameternumber") private IJExpression createSpecialInjection(EComponentHolder holder, String fieldTypeQualifiedName, JFieldRef serviceRef, int apiLevel, String apiLevelName, AbstractJClass serviceClass, String injectionMethodName, boolean invocationRequiresContext) { if (getEnvironment().getAndroidManifest().getMinSdkVersion() >= apiLevel) { return createNormalInjection(holder, fieldTypeQualifiedName, serviceRef); } else { JInvocation serviceClassInvocation = serviceClass.staticInvoke(injectionMethodName); if (invocationRequiresContext) { serviceClassInvocation.arg(holder.getContextRef()); } if (isApiOnClasspath(apiLevelName)) { IJExpression condition = getClasses().BUILD_VERSION.staticRef("SDK_INT").gte(getClasses().BUILD_VERSION_CODES.staticRef(apiLevelName)); IJExpression normalInjection = createNormalInjection(holder, fieldTypeQualifiedName, serviceRef); return JOp.cond(condition, normalInjection, serviceClassInvocation); } else { return serviceClassInvocation; } } }