作業例:たとえば
public class SessionManager {
public void setPreferences(Context context, String key, String value) {
SharedPreferences.Editor editor = context.getSharedPreferences("Androidwarriors", Context.MODE_PRIVATE).edit();
editor.putString(key, value);
editor.commit();
}
public String getPreferences(Context context, String key) {
SharedPreferences prefs = context.getSharedPreferences("Androidwarriors", Context.MODE_PRIVATE);
String position = prefs.getString(key, "");
return position;
}
}
スプラッシュ画面、アプリ
public class Splash extends AppCompatActivity {
SessionManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
manager=new SessionManager();
// METHOD 1
/****** Create Thread that will sleep for 3 seconds *************/
Thread background = new Thread() {
public void run() {
try {
// Thread will sleep for 3 seconds
sleep(3*1000);
// After 5 seconds redirect to another intent
String status=manager.getPreferences(Splash.this,"status");
Log.d("status",status);
if (status.equals("1")){
Intent i=new Intent(Splash.this,MainActivity.class);
startActivity(i);
}else{
Intent i=new Intent(Splash.this,LoginActivity.class);
startActivity(i);
}
//Remove activity
finish();
} catch (Exception e) {
}
}
};
// start thread
background.start();
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//***Change Here***
startActivity(intent);
finish();
System.exit(0);
}
}
の1つの画面は、ログイン活動へのWebViewクラス
上
manager.setPreferences(LoginActivity.this, "status", "1");
String status=manager.getPreferences(LoginActivity.this,"status");
Log.d("status", status);
// Toast.makeText(getBaseContext(), "Bem-Vindo", Toast.LENGTH_LONG).show();
Intent i = new Intent(LoginActivity.this, Web.class);
startActivity(i);
を追加します。
public class Web extends AppCompatActivity {
//private WebView webView;
SessionManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
manager = new SessionManager();
// webView = (WebView) findViewById(R.id.webView);
WebView webView = new WebView(this);
final WebSettings settings = webView.getSettings();
webView.getSettings().setJavaScriptEnabled(true);
settings.setJavaScriptEnabled(true);
settings.setAppCacheEnabled(false);
settings.setPluginState(WebSettings.PluginState.ON);
setContentView(webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("link");
}
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//***Change Here***
startActivity(intent);
finish();
System.exit(0);
}
}
私は私のJavascriptInterface
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
//Not sure if this part works haven't tested it yet
CookieSyncManager sm = CookieSyncManager.createInstance(context);
sm.sync();
} else {
cookies.flush();
}
CookieSyncManager
に次のコードを使用して終了しました。この
manager.setPreferences(Web.this, "status", "0");
finish();
私はこれが関連しているとは思わない。おそらく、私は自分自身を明らかにしなかったし、主な活動以外にも(ウェブビューで)私は他の活動を持たず、ログインとセッションの処理はウェブサイトによって行われ、アプリケーションはそれを扱わず、意味する。セッションデータは既にwebviewによって保存されています。私はそれを自分で強制的に保存できるようにする方法を知る必要があります。 –
私はこれが助けることができると信じていますhttp://stackoverflow.com/questions/2566485/webview-and-cookies-on-android –