Передача cookies между activity

Ответить
Remie
Сообщения: 19
Зарегистрирован: 26 июл 2013, 20:09

Передача cookies между activity

Сообщение Remie » 21 окт 2013, 19:11

Получаю куки и авторизуюсь через приложение нормально, но как сделать синхронизацию куков между активити?
Примерный код активити-донора:


[syntax=java]public class Login extends Activity {
WebView webview;

String url = "http..";

ParseMyPageTask mt;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView) findViewById(R.id.webview);

mt = (ParseMyPageTask) getLastNonConfigurationInstance();
if (mt == null) {
mt = new ParseMyPageTask();
mt.execute(url);
}

mt.link(this);
if (mt.getStatus() == AsyncTask.Status.FINISHED)
try {
mt.onPostExecute(mt.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}

webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url) {

mt = new ParseMyPageTask();
mt.execute(url);
mt.link(Login.this);
return true;

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
});
}

//************* Передаю данные в целевое активити ************//
public void ToMainActivity(String ToMainActivity) {

startActivity(new Intent(this, MainActivity.class).putExtra(
"ToMainActivity", ToMainActivity));
}

public Object onRetainNonConfigurationInstance() {
mt.unLink();
return mt;
}

// ********************** AsyncTask ***************************//

private static class ParseMyPageTask extends
AsyncTask<String, Integer, String> {

Login activity;

void link(Login act) {
activity = act;
}

void unLink() {
activity = null;
}

@Override
protected String doInBackground(String... params) {

Document doc = null;
String result = "";

// Получаю куки
try {
activity.CurURL = params[0];
Response res = Jsoup
.connect("http..")
.data("mode", "post")
.data("user", "username")
.data("password", "password")
.data("url", "http..")
.method(Method.POST).execute();

Map<String, String> cookies = res.cookies();

// Подключаюсь к серверу и передаю куки
doc = Jsoup
.connect(params[0])
.cookies()
.get();

result = doc.toString();

} catch (IOException e) {
e.printStackTrace();
}

return result;
}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);

activity.webview.loadDataWithBaseURL("http..",
"<head><meta name='viewport' content='width=device-width, user-scalable=no' /></head><body>" + result
+ "</body>", "text/html", "UTF-8", "");
}
}
}
[/syntax]

Для удобства чтения отметила ключевые места комментариями.

IceJOKER
Сообщения: 14
Зарегистрирован: 14 окт 2013, 13:40

Re: Передача cookies между activity

Сообщение IceJOKER » 01 ноя 2013, 16:53

проходили урок по передаче данных Intent?
putExtra ?

getExtra?

Так вот, передайте методом putExtra куки другому активити и там примите

Ответить