4

Android用のSNSアプリを作ろうとしています。私の質問は、ユーザーがログインしたときにユーザー セッションを維持する方法です。

上記の質問の解決策を見つけるのを手伝ってください。

4

5 に答える 5

8

試す

public class Session {
private static String sessionId;
private static String userRole;

public static void setSessionId(String sessionId) {
    Session.sessionId = sessionId;
}

public static String getSessionId() {
    return sessionId;
}

}

このクラスを使用して、他のすべてのアクティビティにインポートします。独自の関数を定義して、特定のセッション データを維持できます

于 2012-05-15T12:15:55.337 に答える
0

http://www.devahead.com/blog/2011/06/extending-the-android-application-class-and-dealing-with-singleton/

上記のリンクをご覧ください。それはかなり詳細です。

シングルトンを使用して、ユーザーセッションを維持します。

于 2012-05-15T12:20:24.767 に答える
0

SharedPreferences を使用してセッションを作成します。

public class Session {

    private SharedPreferences prefs;

    public Session(Context cntx) {
        // TODO Auto-generated constructor stub
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
    }

    public void setusename(String usename) {
        prefs.edit().putString("usename", usename).commit();

    }

    public String getusename() {
        String usename = prefs.getString("usename","");
        return usename;
    }
}

このクラスを作成した後、これを使用したい場合は、このようにオブジェクトを作成し、このクラスを次のように使用します

private Session session;//global variable 
session = new Session(cntx); //in oncreate 
//and now we set sharedpreference then use this like

session.setusename("USERNAME");
now when ever u want to get username then same work for session object and call this

session.getusename();

頑張ってください:)パスワードも同じです

于 2015-01-12T10:51:49.963 に答える
0

とを使用DefaultHttpClientします。これに似たもの:HttpRequestInterceptorHttpResponseInterceptor

public class HTTPClients {

    private static DefaultHttpClient _defaultClient;
    private static String session_id;
    private static HTTPClients _me;
    private HTTPClients() {

    }
    public static DefaultHttpClient getDefaultHttpClient(){
        if ( _defaultClient == null ) {
            _defaultClient = new DefaultHttpClient();
            _me = new HTTPClients();
            _defaultClient.addResponseInterceptor(_me.new SessionKeeper());
            _defaultClient.addRequestInterceptor(_me.new SessionAdder());
        }
        return _defaultClient;
    }

    private class SessionAdder implements HttpRequestInterceptor {

        @Override
        public void process(HttpRequest request, HttpContext context)
                throws HttpException, IOException {
            Log.d("SessionKeeper", "Adding session with the following string: " + session_id);
            if ( session_id != null ) {
                request.setHeader("Cookie", session_id);
            }
        }

    }

    private class SessionKeeper implements HttpResponseInterceptor {

        @Override
        public void process(HttpResponse response, HttpContext context)
                throws HttpException, IOException {
            Header[] headers = response.getHeaders("Set-Cookie");
            if ( headers != null && headers.length == 1 ){
                Log.d("SessionKeeper", "Keeping session with the following string: " + headers[0].getValue());
                session_id = headers[0].getValue();
            }
        }

    }
}
于 2013-06-27T16:55:05.573 に答える
0

そのセッションIDを送信しようとすると、Androidクライアント側で同様の問題が発生し、サーバー側が新しいセッションを作成しています...しかし、Androidクライアント側でDefaulthttpClientを2回作成していないことを確認します... httpclientを一度だけ作成して、メインアクティビティを言って、オブジェクトを他のアクティビティに渡します...... 2番目のHttpClientを作成しないでください

于 2014-04-25T13:17:25.783 に答える