WebView에서 브라우저 쿠키를 수집하여 다른 활동으로 반환해야합니다. 쿠키를 수집하는 것은 이미 작동하지만 WebViewClient
을 확장하는 클래스에서 발생하며 거기에서 데이터를 반환하는 방법을 알지 못합니다.WebViewClient가 Activity onPageFinished에 데이터를 반환합니다.
2 가지 활동이 있습니다. MainActivity 및 LoginActivity와 같습니다. MainActivity에는 인 텐트를 만들고 LoginActivity를 시작하는 단일 버튼이 있습니다.이 버튼에는 단일 WebView가 있습니다. OnCreate()
이면 WebView는 웹 사이트의 로그인 페이지로 연결됩니다. 사용자가이 사이트에 성공적으로 로그인하면 데이터를 브라우저 쿠키에 저장합니다. 나중에 API 호출에 필요한 데이터입니다. 이 데이터를 어떻게 MainActivity에 반환 할 수 있습니까?
WebView에는 URL이 예상 한 것일 경우 OnPageFinished()
메서드가 오버라이드 된 사용자 지정 WebViewClient가 있으며 아래와 같이 브라우저 쿠키가 수집됩니다.
class TempWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// If page URL is the Home page (ie., you logged in successfully), collect cookies.
if (url.equals("https://slate.sheridancollege.ca/d2l/m/home")) {
String cookies = CookieManager.getInstance().getCookie(url);
String[] cookies2 = cookies.split(";");
String key1 = "";
String key2 = "";
// Find Keys placed in browser cookies.
for (String c : cookies2) {
String[] c2 = c.split("=");
if (c2[0].equals(" phrase1")) {
key1 = c2[1];
}
if (c2[0].equals(" phrase2")) {
key = c2[1];
}
}
}
}
}
LoginActivity 내가 쿠키에서 열쇠를받은 때까지 finish()
(MainActivity로 돌아)를 호출하지 않아야합니다. 이미 내가 가진 것을 생각하면 어떻게하면 될까요? LoginActivity가 WebView의 데이터를 가질 때까지 MainActivity로 돌아가는 것을 어떻게 억제 할 수 있는지 모르겠습니다.
public class LoginActivty extends Activity {
WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
setupViews();
setContentView(webview);
}
public void setupViews() {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
CookieManager.getInstance().setAcceptCookie(true);
webview = new WebView(this);
webview.setWebViewClient(new TempWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("website");
}
}
쉬운 방법에 대한 LoginActivity을 기능을 시작 만들기 activity 또는 startActivity를 검색 한 다음 결과를 리턴하십시오. –
문제는 타이밍입니다. 멀티 스레딩 문제처럼 보입니다. 나는 쿠키의 키가 획득되었을 때 LoginActivity가 MainActivity로만 돌아 가기를 원한다. 솔루션에서 시간을 고려하지 않습니다. – UmbraLegacy