2011-10-07 40 views
2

我正在測試android的授權系統。正是我剛剛編譯ServerManagedPolicy示例項目,我有一個關於它的問題: 如果我做的:沒有互聯網連接的授權系統

Device's Internet=ON 
Launch the app 
Launch the check= Allow access 
Device's Internet=OFF 
Relaunch app and check= Allow access 

好了,現在讓我們看看這個問題:

Device's Internet=OFF 
Launch the app 
Launch the check= Don't allow access 

從邏輯上講,我不希望出現這種情況。因爲如果用戶在沒有互聯網的情況下啓動應用程序,該應用程序將被阻止,即使它被許可。我該如何解決這個問題?我的應用程序需要連接到Internet才能工作,因此在延遲檢查時沒有問題

回答

4

您可以使用帶有handleResponse()的自定義LicenseValidator類,該程序只在策略中使用許可證檢查器回調時調​​用dontAllow()返回LicenseResponse.NOT_LICENSED,並在所有其他情況下允許()包括網絡錯誤。

public class LicenseValidator { 
... 
    public void handleResponse(LicenseResponse response, ResponseData rawData) { 
     mPolicy.processServerResponse(response); 
     if (mPolicy.allowAccess()) { 
      mCallback.allow(); 
     } else if (response == LicenseResponse.NOT_LICENSED) { 
      mCallback.dontAllow(); 
     } 
    } 

,還可以使用自定義的策略,而不是ServerManagedPolicy:

public class MyPolicy { 
private LicenseResponse mLastResponse; 

public MyPolicy(Activity activity) { 
    mLastResponse = LicenseResponse.RETRY; 
} 

public void processServerResponse(LicenseResponse response) { 
    mLastResponse = response; 
} 

public boolean allowAccess() { 
    return (LicenseResponse.LICENSED.equals(mLastResponse)); 
} 

}

這是小多我做過什麼,它工作正常。