В моем приложении я использую Retrofit и okHttpClient для получения запроса к серверу.
В этой конфигурации retrofit я хочу отправить некоторые данные вHeader
на сервер.
Эти данные UUID устройства и для get UUID устройства Я пишу код ниже в одном классе (это имя класса Extensions):
@SuppressLint("HardwareIds")
fun Context.getDeviceUUID(): String {
return try {
Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
} catch (e: Exception) {
"exception"
}
}
Для получения UUID устройства я должен передать context
.
И я хочу отправить это UUID устройства в ApiClient класс.
класс ApiClient:
class ApiClient {
private val apiServices: ApiServices
init {
//Gson
val gson = GsonBuilder()
.setLenient()
.create()
//Http log
val loggingInterceptor = HttpLoggingInterceptor()
loggingInterceptor.level =
if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE
//Http Builder
val clientBuilder = OkHttpClient.Builder()
clientBuilder.interceptors().add(loggingInterceptor)
clientBuilder.addInterceptor { chain ->
val request = chain.request()
request.newBuilder().addHeader("uuid", ).build()
chain.proceed(request)
}
//Http client
val client = clientBuilder
.readTimeout(NETWORK_CONNECTIONS_TIME, TimeUnit.SECONDS)
.writeTimeout(NETWORK_CONNECTIONS_TIME, TimeUnit.SECONDS)
.connectTimeout(NETWORK_CONNECTIONS_TIME, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.build()
//Retrofit
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
.build()
//Init apiServices
apiServices = retrofit.create(ApiServices::class.java)
}
companion object {
private var apiClient: ApiClient? = null
val instance: ApiClient
get() {
if (apiClient == null) {
apiClient = ApiClient()
}
return apiClient as ApiClient
}
}
}
Я должен использовать getDeviceUUID в этом коде: request.newBuilder().addHeader("uuid", ).build()
как можноя передаю context
в ApiClient класс?