안드로이드 개발 질문/답변
(글 수 45,052)
아 이게 몇일째인지 모르겠네요 ㅠㅠ 도움받고 받고 받아서~ 여기까지 왔는데 잘된건지 잘못된건지도 모르겠고. 도움요청합니다~
제가 원하는건 로그인유지와 걍 로그인을 하는건데요 무슨 말이냐 하면..
액티비티로 아이디 패스워드 입력 로그인 버튼누름 -> 웹싸이트접속 그다음 쿠키만 저장하고 이저장된 쿠키를 쿠키매니저로 등록후 -> loadurl로 웹싸이트에 접속을 해서 웹뷰에 뿌리면(로그인된 화면) 마치 액티비티로그인을 통해서 로그인 된 것처럼 보이겠죠?
즉 액티비티에 의한 로그인을 만들려고 합니다 물론 나중에는 로그인 구현할꺼구요
초보라서 이곳저곳 구해서 조합을 했긴했는데 맞는지 모르겠네요..ㅠ 제가 원하는 소스는 없더라 구요.. 검토 부탁드려요~
* login_page.xml : 로그인 화면
* tab1 : login_page.xml에 입력값을 받고 httpclient를 통해 접속후 쿠키값을 얻음, 쿠키값을 얻은후 쿠키매니저에 넣음. 그후 tab2를 바로 연다..
* tab2는: 웹뷰와 loadurl(http://192.168.0.0)만 구현되있음. 즉 tab2액티비티를 바로 실행하면 loadurl에 적힌 싸이트로 바로 이동하게되있음.
-----------------------------------------------------------------------------------------------------------------
--- tab1.java
package com.tabhostbottom;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.HttpResponseException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebView;
public class Tab1 extends Activity
{
public static WebView webview;
public HttpClient httpclient = new DefaultHttpClient(); //멤버변수로 선언
public CookieManager cookieManager;
public String domain = "http://192.168.0.0";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.login_page);
CookieSyncManager.createInstance(this);
cookieManager = CookieManager.getInstance();
CookieSyncManager.getInstance().startSync();
}
public void onResume()
{
super.onResume();
CookieSyncManager.getInstance().startSync();
}
public void onPause() {
super.onPause();
if (CookieSyncManager.getInstance() != null) {
CookieSyncManager.getInstance().stopSync();
}
}
protected void onDestroy() {
super.onDestroy();
if (cookieManager != null) {
cookieManager.removeAllCookie();
}
}
public void setSyncCookie() {
Log.e("surosuro", "token transfer start ---------------------------");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "idtest"));// 넘길 파라메터 값셋팅token=TEST
nameValuePairs.add(new BasicNameValuePair("pw", "8888"));// 넘길 파라메터 값셋팅token=TEST
HttpParams params = new BasicHttpParams();
HttpPost post = new HttpPost(domain+"/androidToken.jsp");
post.setParams(params);
HttpResponse response = null;
BasicResponseHandler myHandler = new BasicResponseHandler();
String endResult = null;
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
response = httpclient.execute(post);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
endResult = myHandler.handleResponse(response);
} catch (HttpResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
List<Cookie> cookies = ((DefaultHttpClient)httpclient).getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
// cookie = cookies.get(i);
String cookieString = cookies.get(i).getName() + "="
+ cookies.get(i).getValue();
Log.e("surosuro", cookieString);
cookieManager.setCookie(domain, cookieString);
}
}
Thread.sleep(500);
} catch (Exception ex)
{
ex.printStackTrace();
}
}
}
-------- tab2.java
package com.tabhostbottom;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.Toast;
import android.graphics.Bitmap;
public class Tab2 extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
WebView webview;
super.onCreate(savedInstanceState);
setContentView(R.layout.good);
webview=new WebView(this);
webview.setWebViewClient(new WebViewClient());
setContentView(webview);
WebSettings set = webview.getSettings();
set.setJavaScriptEnabled(true);
/* set.setBuiltInZoomControls(true);*/
webview.loadUrl("http://192.168.0.0);
}
------ login_page.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView android:id="@+id/welcome_text"
android:text = "Welcome to My Application!n"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
/>
<TextView android:id="@+id/username_text"
android:text = "username:"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/welcome_text"
/>
<EditText android:id="@+id/txt_username"
android:layout_height="wrap_content"
android:layout_width="250px"
android:layout_centerHorizontal="true"
android:layout_below="@+id/username_text"
android:singleLine="true" />
<TextView android:id="@+id/password_text"
android:text = "password:"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_username"
/>
<EditText android:id="@+id/txt_password"
android:password="true"
android:layout_height="wrap_content"
android:layout_width="250px"
android:layout_centerHorizontal="true"
android:layout_below="@+id/password_text"
android:singleLine="true" />
<Button android:id="@+id/login_button"
android:text="Login!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/txt_password"
/>
</RelativeLayout>