我使用webview编写了一个小程序,菜单的退出代码如下
 public void showExitDialog()
    {
      AlertDialog.Builder localBuilder = new AlertDialog.Builder(this);
      localBuilder.setTitle("南航贴吧");
      localBuilder.setMessage("确认退出南航贴吧?");
      localBuilder.setPositiveButton("确认", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface paramDialogInterface, int paramInt)
        {
          paramDialogInterface.dismiss();         
          Nuaaer.this.webView.stopLoading();
          Nuaaer.this.webView.destroy();
          Nuaaer.this.finish();
          //android.os.Process.killProcess(android.os.Process.myPid());//A        }
      });
      localBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface paramDialogInterface, int paramInt)
        {
          paramDialogInterface.dismiss();
        }
      });
      localBuilder.create().show();}}我调用结束进程A行,就会导致登录状态掉线,但是会保存用户名和密码,现在我想既能结束进程,又能在下次登录自动加载cookies。总而言之就是cookie 的加载问题。

解决方案 »

  1.   

    登陆后用get_cookie获取有效Cookie并保存
    下次需要时用InternetSetCookie恢复 
      

  2.   


    请问您能讲的具体一点吗?使用cookiemanager获取cookie吗?谢谢!
      

  3.   


    package com.nuaa.nh;import java.util.List;import org.apache.http.cookie.Cookie;import android.os.Bundle;
    import android.os.Handler;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.pm.PackageManager;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.webkit.CookieManager;
    import android.webkit.CookieSyncManager;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.view.Window;public class Nuaaer extends Activity {
    private WebView webView; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_nuaaer);
    webView = (WebView) findViewById(R.id.webView1);
    WebSettings ws = webView.getSettings();
    ws.setSupportZoom(true);
    ws.setJavaScriptEnabled(true);
    webView.requestFocusFromTouch();
    webView.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
    }
    }); webView.setWebChromeClient(new WebChromeClient());
    webView.loadUrl("http://wapp.baidu.com/f?kw=%E5%8D%97%E4%BA%AC%E8%88%AA%E7%A9%BA%E8%88%AA%E5%A4%A9%E5%A4%A7%E5%AD%A6&order=1&pn=0&rn=10&from=2001a&ssid=0&bd_page_type=1&vit=aladdin&uid=wiaui_1340814157_5775&ssid=0&from=2001a&uid=wiaui_1340814157_5775&pu=usm%400%2Csz%401320_1003&bd_page_type=1&tj=tieba_1_0_10_title"); } public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
    webView.goBack();
    return true;
    }
    return super.onKeyDown(keyCode, event);
    } @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_nuaaer, menu); return true;
    } @Override
    public boolean onOptionsItemSelected(MenuItem paramMenuItem) {
    int i = paramMenuItem.getItemId();
    AlertDialog.Builder localBuilder = new AlertDialog.Builder(this);
    switch (i) {
    default:
    case 0x7f070001: {
    localBuilder.setTitle("南航贴吧");
    localBuilder.setMessage("名称:南航贴吧Android版\n1.00版本:");
    localBuilder.setPositiveButton("确定",
    new DialogInterface.OnClickListener() {
    public void onClick(
    DialogInterface paramDialogInterface,
    int paramInt) {
    paramDialogInterface.dismiss();
    }
    });
    localBuilder.create().show();
    }
    return true;
    case 0x7f070002:
    showExitDialog();
    return true;
    } } public void showExitDialog() {
    AlertDialog.Builder localBuilder = new AlertDialog.Builder(this);
    localBuilder.setTitle("南航贴吧");
    localBuilder.setMessage("确认退出南航贴吧?");
    localBuilder.setPositiveButton("确认",
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface paramDialogInterface,
    int paramInt) {
    paramDialogInterface.dismiss();
    Nuaaer.this.webView.stopLoading();
    Nuaaer.this.webView.destroy();
    Nuaaer.this.finish();
    //android.os.Process.killProcess(android.os.Process.myPid()); }
    });
    localBuilder.setNegativeButton("取消",
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface paramDialogInterface,
    int paramInt) {
    paramDialogInterface.dismiss();
    }
    });
    localBuilder.create().show();
    }
    }全部代码都在这了。求高手啊!
      

  4.   

    其实你就是想在下次登录的时候直接进来而不需要再走一遍登录界面、是这个意思么?要是是的话、你就需要把你的用户名和密码保存下来、然后在下次进入应用界面之前先判断有没有用户名和密码、要是有的话、就直接调用登录界面里面点登录时候调用的那个方法就好了、剩下的工作、就可以顺上去了、、、用户名这些小数据用SharedPreferences保存就OK了、
      

  5.   

    SharedPreferenc的方法不会么?
    /**
     * 设置用户名,密码
     * @param userName
     * @param password
     */
    public void SaveUserNameAndPassword(String userName,String password)
    {
    Editor sharedata = myContext.getSharedPreferences("data", 0).edit();
    sharedata.putString("userName",userName);   
    sharedata.putString("password",password); 
    sharedata.commit();
    }
    /**
     * 获取用户名
     * @return
     */
    public String getUserName()
    {
    SharedPreferences sharedata = myContext.getSharedPreferences("data", 0);  
    String userName = sharedata.getString("userName", "");
    return userName;
    }
    /**
     * 获取密码
     * @return
     */
    public String getPassword()
    {
    SharedPreferences sharedata = myContext.getSharedPreferences("data", 0);  
    String password = sharedata.getString("password", "");
    return password;
    }