2015-11-04 79 views
0

我的應用有一些onClick()事件,其中一些事件需要登錄才能發送請求。檢查在執行操作前是否已登錄

我應該如何處理如果有人點擊某些事情需要他們登錄纔會發生的操作?

我有以下改造類:

public class RestClient { 

    private static ApiEndpointInterface apiService; 
    private static String API_URL = "http://www.website.com/api"; 

    private RestClient() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(API_URL) 
       .setRequestInterceptor(new SessionRequestInterceptor()) 
       .build(); 

     apiService = restAdapter.create(ApiEndpointInterface.class); 
    } 

    public static ApiEndpointInterface getApiService() { 
     return apiService; 
    } 

    public class SessionRequestInterceptor implements RequestInterceptor { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addHeader("Accept", "application/json"); 
      if (PreferenceUtils.isLoggedIn()) { 
       request.addHeader("Authorization", PreferenceUtils.getTokenId() + ":" + PreferenceUtils.getTokenKey()); 
      } 
     } 
    } 
} 

,這就是所謂的其他地方是這樣的:

RestClient.getApiService().getUser(new Callback<UserData>() { 
    @Override 
    public void success(UserData json, Response response) { 

    } 

    @Override 
    public void failure(RetrofitError retrofitError) { 

    } 
}); 

正如你所看到的,如果他們登錄的攔截器增加了一個Authorization頭,但是如果他們沒有登錄,我是否應該阻止這些電話完全通話?我應該如何實現?

回答

0

我覺得你可以

sp.edit().putBoolean("logged", true).commit(); 

anfd下次登錄後使用SharedPreferences

SharedPreferences sp=getSharedPreferences("some_name",MODE_PRIVATE); 

,您可以檢查用戶是否已經looged或不

if (sp.getBoolean("logged", false)) { 

    //LOGGED IN, DO YOUR CODE 

} 
else{ 
    //NOT LOGGED IN 
} 
相關問題