Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将自定义系统服务名称添加到@ServiceName StringDef?_Android_Android Studio_Android Lint - Fatal编程技术网

Android 如何将自定义系统服务名称添加到@ServiceName StringDef?

Android 如何将自定义系统服务名称添加到@ServiceName StringDef?,android,android-studio,android-lint,Android,Android Studio,Android Lint,在我们的一些活动中,我们重写了getSystemService方法,以返回一些自定义服务名称的自定义对象。对于我们来说,将一些对象传递给这种活动中某个深处的视图是非常有效的 但在Android Studio中,我们在获取自定义系统服务的一行中得到一个由lint检查生成的错误: 返回CustomService context.getSystemServiceSERVICE\u名称 我知道lint在getSystemService上使用@ServiceName注释,该注释是通过上下文类中的@Stri

在我们的一些活动中,我们重写了getSystemService方法,以返回一些自定义服务名称的自定义对象。对于我们来说,将一些对象传递给这种活动中某个深处的视图是非常有效的

但在Android Studio中,我们在获取自定义系统服务的一行中得到一个由lint检查生成的错误:

返回CustomService context.getSystemServiceSERVICE\u名称

我知道lint在getSystemService上使用@ServiceName注释,该注释是通过上下文类中的@StringDef定义的。我想知道如何扩展此定义以包括我们的自定义服务名称

我不想每次使用我们的定制系统服务时都放弃这个非常有用的检查,也不想抑制这个错误。这就是为什么我希望能够为lint添加自定义名称,以识别此调用是否正确

public class SomeClass{

    public static final String SERVICE_1= "SERVICE_1";
    public static final String SERVICE_2= "SERVICE_2";
    public static final String SERVICE_3= "SERVICE_1";

    @StringDef({SERVICE_1, SERVICE_2, SERVICE_3})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ServiceName{}

    ...

    public Object getService(@ServiceName String name){
        //Resolve service by string name
        ...
    }

}
要使用@StringDef注释,请将以下依赖项添加到gradle生成文件

dependencies {
    compile 'com.android.support:support-annotations:23.1.1'
}

有关更多信息,请使用

如果编辑Context.java不是一个选项,即您没有构建自定义ROM,那么除了可能以某种方式抑制错误之外,您什么也做不了-可能吗?