2016-05-19 2 views
0

У меня есть приложение, которое требует, чтобы ключ подписки был помещен в заголовок запроса. Есть ли способ, которым я мог бы ссылаться на ключ из строковых ресурсов на интерфейс.Ссылка на строку из ресурсов на интерфейс

Учитывая этот код

public interface apiService { 
    @Headers({ 
      "Content-Type: application/octet-stream", 
      "Ocp-Apim-Subscription-Key: 194bcbe84a424c8d9c7378cc9e5fa41d"//key 
    }) 
    @POST("vision/v1.0/analyze") 
    Call<visualFeatures_Description> uploadImage(@Body RequestBody imageFile); 
} 

Я хотел бы, чтобы загрузить хранилище в Github и добавить файл XML ресурса в .gitignore так что мой ключ не будет виден.

Я попытался с помощью

getString(R.strings.key) 

внутри интерфейса, но он говорит, что я не могу ссылаться из статического контекста.

ответ

0

вы должны использовать класс Application.

public class AppController extends Application { 

private static Context mContext; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    mContext = this; 
} 

public static Context getContext(){ 
    return mContext; 
} 
} 

теперь вы можете получить доступ к resources как это ..

AppController.getContext().getResources().getString(R.string.key); 

Не забудьте добавить этот класс в Manifest.xml как

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:name=".AppController" <!--Here you can see this --> 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
+0

Привет, Devendera, я попытался выполнить ваш ответ, но когда я пытаюсь использовать 'AppController.getContext(). GetResources(). GetString (R.string.key);' внутри метода интерфейса Retrofit он говорит, что не может разрешить символ getContext(). – f123

0

Попробуйте это:

Resources.getSystem().getString(R.strings.key) 

Вы можете использовать его где угодно.

Смежные вопросы