如何使用另一个 class 的 IntDef 注释

How to use IntDef annotation from another class

我正在尝试使用 android.content.pm.ActivityInfo 中的 @ScreenOrientation。它的声明:

@IntDef({
        SCREEN_ORIENTATION_UNSPECIFIED,
        SCREEN_ORIENTATION_LANDSCAPE,
        ...
})
@Retention(RetentionPolicy.SOURCE)
public @interface ScreenOrientation {}

我这样使用编译器无法解析:

public abstract class ActivityBase extends ActionBarActivity {

    @ScreenOrientation
    protected abstract int getPhoneOrientation();    
}

import android.content.pm.ActivityInfo.*; 没有帮助。
@android.content.pm.ActivityInfo.ScreenOrientation 也无济于事。

我在 gradle 文件中有注释库

compile 'com.android.support:support-annotations:22.0.0'

完全有可能还是注释只是以某种方式隐藏了?

注释确实被隐藏了——如果你看一下ActivityInfo(当前第 313 行): https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/pm/ActivityInfo.java

您会看到上面有一个 @hide 注释,因此我们无法在我们的应用程序中直接使用它。