我有一个带有静态密钥的接口。而且我想从字符串文件中检索此键,但是如果我只放入R.string.key,它会显示不兼容的类型,因为它会检索整数值,如果我放入R.string.key +“”,它将变成一个字符串,但要检索String文件ID,最好使用getResources.getString(R.string.key),但是无法在Interface中使用getResources.getString方法。

工作方式:

public interface NotificacaoService {
    @Headers({"34853485734",
            "Content-Type:application/json"}) @POST("send")
    Call<NotificacaoDados> salvarNotificacao(@Body NotificacaoDados notificacaoDados);
}


我想这样离开它:

public interface NotificacaoService {
    @Headers({getResources.getString(R.string.key),
            "Content-Type:application/json"}) @POST("send")
    Call<NotificacaoDados> salvarNotificacao(@Body NotificacaoDados notificacaoDados);
}

最佳答案

抱歉,无法实现您想要的。注释参数必须是常量。

一种解决方案是从字符串资源切换到BuildConfig。在Gradle脚本中使用buildConfigField定义密钥(buildConfigField "String", "API_KEY", "\"34853485734\""). Then, you can reference that generated constant in your interface (e.g., BuildConfig.API_KEY`)。

或者,如果此接口用于Retrofit,则可以通过OkHttp拦截器(而不是通过@Headers注释)添加标头。

09-11 20:57