2016-05-19 7 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のリポジトリにアップロードし、私のキーは表示されませんので、.gitignoreにリソースのxmlファイルを追加したいと思います。

私はインターフェイス内

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); 

このお試しください

<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

ようManifest.xmlにこのクラスを追加することを忘れないでください:

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

どこでも使えます。

関連する問題