2012-09-14 2 views
0

WebView에 URL을 열려고하는데 세션을 유지 관리하지 않아서 가능하다고 생각합니다. 활동의 서버에 사용자 이름, 암호 및 사용자 ID를 보냈습니다. 여기에서, 서버 측으로부터 응답이 "1"나는 여기 WebView에서 사용자의 콘텐츠를 표시 할 필요가있는 새로운 작업을 개방하고 것은 코드Android : 애플리케이션에 로그인 한 후 세션을 유지할 수 없음

의 경우 그 후 코드 ..

public class ServiceActivity extends Activity { 
private Button button_back; 

private Button button_submit_user_pass; 
private EditText edit_id_code; 
private String contents; 
private String format; 
private String username; 
private String password; 
private String id; 
public static HttpClient client; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.qr_code_view); 

    edit_id_code = (EditText) findViewById(R.id.editText_id); 

    button_back = (Button) findViewById(R.id.button_back); 
    button_submit_user_pass = (Button) findViewById(R.id.button_submit_user_pass); 

    Intent user_pass = getIntent(); 

    username = user_pass.getStringExtra("user"); 
    password = user_pass.getStringExtra("pass"); 


    button_submit_user_pass 
      .setOnClickListener(user_pass_qr_submit_listener); 
    button_back.setOnClickListener(back_listener); 

} 

private View.OnClickListener user_pass_qr_submit_listener = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     try { 
      id = edit_id_code.getText().toString(); 

      client = new DefaultHttpClient(); 
      HttpPost post1 = new HttpPost(
        "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
      List<NameValuePair> nvp = new ArrayList<NameValuePair>(); 
      nvp.add(new BasicNameValuePair("uname", username)); 
      nvp.add(new BasicNameValuePair("password", password)); 
      nvp.add(new BasicNameValuePair("id", id)); 
      post1.setEntity(new UrlEncodedFormEntity(nvp)); 
      HttpResponse resp = client.execute(post1); 
      String responseText = inputStreamTOString(
        resp.getEntity().getContent()).toString(); 
      Log.i("response", responseText); 
      int num = Integer.parseInt(responseText); 

      if (num == 0) { 
       Toast.makeText(getApplicationContext(), 
         "Response" + responseText, 0).show(); 
      } else if (num == 1) { 
       Intent survey = new Intent(ServiceActivity.this, 
         WebViewActivity.class); 
       startActivity(survey); 
      } 
     } catch (Exception e) { 
      Log.e("error", "ERROR" + e); 
     } 

    } 

}; 
private View.OnClickListener back_listener = new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
    } 
}; 

private StringBuilder inputStreamTOString(InputStream is) { 
    String line = ""; 
    StringBuilder total = new StringBuilder(); 

    // read response until the end 
    try { 
     BufferedReader rd = new BufferedReader(new InputStreamReader(is, 
       "iso-8859-1"), 8); 
     while ((line = rd.readLine()) != null) { 
      total.append(line); 

     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 
    return total; 

} 
} 

이다

public class WebViewActivity extends Activity{ 
private WebView web; 
@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.web_view); 

    web = (WebView) findViewById(R.id.webView); 


    web.getSettings().setJavaScriptEnabled(true); 


    web.loadUrl("xxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 
} 

} 

하지만 사용자에게 해당 URL을로드 할 수 없기 때문에 webviewactivity에서 PHP 오류가 발생합니다. 로그인 한 사용자의 세션을 유지할 수 없기 때문입니다. 이.

답변

0

당신이해야 할 것은 그것이 당신이 만들고있는 포스트 요청에서 반환 될 때 세션을 추적하기 위해 PHP가 사용하는 쿠키를 저장하는 것입니다 다음 요청에 사용하십시오. 게시 요청을 수행하는 방법에 따라 여러 가지 방법이 있습니다.

이 대답은 쿠키 처리를 수행하는 방법을 설명합니다. https://stackoverflow.com/a/687453/1525300

0

응용 프로그램의 세션 유지를 위해 SharedPreferences를 사용해보십시오.

값을 저장합니다.

SharedPreferences prefs; 
prefs = PreferenceManager.getDefaultSharedPreferences(this); 
Editor editor = prefs.edit(); 
editor.putString("key", value); 
editor.commit(); 

다른 활동에 PIN이에

SharedPreferences prefs; 
prefs = PreferenceManager.getDefaultSharedPreferences(this); 
String variable = prefs.getString("key","default value"); 
+0

어떻게 수행 할 수 있습니까? 제발 좀 더 자세히 설명해주세요. –

+0

이것은 답변이 아닙니다. 댓글이어야합니다. –

+0

수정 된 답변입니다. 희망이 도움이 될 것입니다. –

관련 문제