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

論理的に私はそれを望んでいません。ユーザーがインターネットなしでアプリを起動すると、ライセンスが付与されていてもアプリがブロックされるためです。どうすればそれを解決できますか?私のアプリケーションは動作するためにインターネットに接続する必要があるので、そのチェックを遅らせることに問題はありません

4

1 に答える 1

4

ポリシーが LicenseResponse.NOT_LICENSED を返した場合にのみライセンス チェッカー コールバックで dontAllow() を呼び出し、ネットワーク エラーを含む他のすべての場合に allow() を呼び出す handleResponse() でカスタム LicenseValidator クラスを使用できます。

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

}

これは私がやったことのほんの一部であり、うまく機能します。

于 2011-10-07T11:40:35.397 に答える