我有一个带有静态密钥的接口。而且我想从字符串文件中检索此键,但是如果我只放入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
注释)添加标头。