0

Private activitiesログインしたユーザーのみがアクセスを許可されPublic activities、誰もがアクセスできるアプリケーションがあります。

PrivateアクセスとPublicアクティビティを管理する最良の方法は何でしょうか。

ユーザーのログインとパスワードをに保存し、SharedPreferencesすべての開始時にそれらを検証して、 Private acitivityログインとパスワードが存在する場合はアクセスを許可し、存在しない場合は拒否することを考えていましたが、それが可能かどうか、または存在するかどうかはわかりませんこれを行うより良い方法。

4

1 に答える 1

1

SharedPreferences を介してユーザーのログイン情報を保存します。ただし、必ず何らかの方法で暗号化してください。そうしないと、誰もが電話から shared_preferences.xml をコピーして、ルート化されている場合はパスワードを平文で見ることができます。

ログイン状態を管理する良い方法は、次のような LoginManager です。

public class LoginManager {

    private static LoginManager singelton;

    private Context context;
    private boolean loggedIn;

    private LoginManager(Context c) {
        this.context = c;
    }


    public static LoginManager getInstance() {
        return singelton;
    }

    public static void create(Context c) {
        singelton = new LoginManager(c);
    }

    public boolean isLoggedIn() {
        return loggedIn;
    }

    public boolean login(String name, String password) {
        // get shared prefs and check for correct username/password
        if(validCredentials)
            loggedIn = true;
        else
            loggedIn = false;
        return loggedIn;

    }

    public void logout() {
        loggedIn = false;
    }

}

ログイン画面または Application.onCreate() で、LoginManager.create(Context c) を呼び出すことができます。その後、LoginManager.getInstance().login(name, password) を使用してユーザーをログインさせます。

ユーザーが任意のアクティビティからログインしているかどうかを確認するには、LoginManager.getInstance().isLoggedIn() を呼び出し、これに従ってアクティビティ固有の設定を設定します。たとえば、一部のアクティビティを非表示にするには、ユーザーがログインしているかどうかを確認し、ログイン ステータスに応じてそのアクティビティのボタンを非表示/表示することができます。

于 2013-08-14T15:50:03.590 に答える