본문 바로가기
안드로이드

안드로이드 커널 소스에는 있지만 안드로이드 SDK 에서 미제공 되는 함수의 원인

by 호군 2011. 3. 17.
반응형
안드로이드에서 공식적으로 제공하는 함수는 안드로이드 개발자 사이트(http://developer.android.com)에서 명시되어있습니다.
그런데 안드로이드 소스를 보면 아래와 같은 함수를 발견 할 수 있습니다. 그러나 public 이지만 SDK에서 제공하는 함수가 아니죠. 그래서 개발 할 경우 이와같은 함수는 사용 할 수 없습니다. 이렇게 동작하는 것은 "@hide" 라고 명시를 했기 때문인데, 컴파일시 SDK에 포함이 되지 않는다고 합니다.
이렇게 공개되지 않는 함수는 언제든지 바뀔 수 있기 때문에 되도록 사용하지 않는 것이 낫다고 하고, 또한 범용적이지 못하기 때문에 다른 커널이 올라가 있는 장치에서는 동작하지도 않겠죠? 즉, 제공하지 않는 것은 사용하지 말자라는 소리입니다.

ps. 사용 하고자 하시는분은 아래의 코드에서 주석을 제거하고 커널을 다시 컴파일하고 사용 하시면 된다고 합니다.

[StateListDrawable.java : proyo]


/**
     * Gets the number of states contained in this drawable.
     *
     * @return The number of states contained in this drawable.
     * @hide pending API council
     * @see #getStateSet(int)
     * @see #getStateDrawable(int)
     */
    public int getStateCount() {
        return mStateListState.getChildCount();
    }

    /**
     * Gets the state set at an index.
     *
     * @param index The index of the state set.
     * @return The state set at the index.
     * @hide pending API council
     * @see #getStateCount()
     * @see #getStateDrawable(int)
     */
    public int[] getStateSet(int index) {
        return mStateListState.mStateSets[index];
    }

    /**
     * Gets the drawable at an index.
     *
     * @param index The index of the drawable.
     * @return The drawable at the index.
     * @hide pending API council
     * @see #getStateCount()
     * @see #getStateSet(int)
     */
    public Drawable getStateDrawable(int index) {
        return mStateListState.getChildren()[index];
    }
   
    /**
     * Gets the index of the drawable with the provided state set.
     *
     * @param stateSet the state set to look up
     * @return the index of the provided state set, or -1 if not found
     * @hide pending API council
     * @see #getStateDrawable(int)
     * @see #getStateSet(int)
     */
    public int getStateDrawableIndex(int[] stateSet) {
        return mStateListState.indexOfStateSet(stateSet);
    }
반응형