Java 如何将登录凭据作为“活动”中的会话变量维护/发送到webview
我正在本地应用程序中存储用户的登录名和密码。我需要将其作为会话变量发送到webview url 在php文件中,我将以Java 如何将登录凭据作为“活动”中的会话变量维护/发送到webview,java,android,session,webview,Java,Android,Session,Webview,我正在本地应用程序中存储用户的登录名和密码。我需要将其作为会话变量发送到webview url 在php文件中,我将以$\u POST['email']的形式检索它。甚至我也从活动中成功检索到响应 但是会话在其他页面中丢失 那么,如何维护或向webview发送凭据 public class Mainactivity extends Activity { //private Button button; private WebView webview; private static final
$\u POST['email']
的形式检索它。甚至我也从活动中成功检索到响应
但是会话在其他页面中丢失
那么,如何维护或向webview发送凭据
public class Mainactivity extends Activity {
//private Button button;
private WebView webview;
private static final String TAG = "Main";
private ProgressDialog progressBar;
SharedPreferences preferences;
public static final String Email = "emailKey";
public static final String Password = "passKey";
public static final String PhoneNum = "phonekey";
String URL = "http://myweb.com/index.php";
int success;
private static final String TAG_SUCCESS = "success";
JSONParser jsonParser = new JSONParser();
@SuppressLint("NewApi") /** Called when the activity is first created. */@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.web);
this.webview = (WebView) findViewById(R.id.webView1);
WebSettings settings = webview.getSettings();
settings.setRenderPriority(RenderPriority.HIGH);
settings.setJavaScriptEnabled(true);
webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webview.loadUrl(URL);
new SetSession().execute();
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
// progressBar = ProgressDialog.show(Mainactivity.this, "Please wait a moment we are setting up environment", "Loading...");
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Processing webview url click...");
view.loadUrl(url);
return true;
}
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "Finished loading URL: " + url);
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
@SuppressWarnings("deprecation")
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e(TAG, "Error: " + description);
Toast.makeText(Shop.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
alertDialog.setTitle("Error");
alertDialog.setMessage(description);
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
alertDialog.show();
}
});
CookieSyncManager.createInstance(this);
CookieManager localCookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= 21) {
localCookieManager.setAcceptThirdPartyCookies(this.webview, true);
}
if (Build.VERSION.SDK_INT >= 19) {
webview.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
else {
webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
Log.i("letzkit360", "At onCreate");
webview.getSettings().setCacheMode(1);
}
class SetSession extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressBar = ProgressDialog.show(MainActivity.this, "Please wait a moment we are setting up environment", "Loading...");
progressBar.setIndeterminate(false);
progressBar.setCancelable(true);
progressBar.show();
}
@Override
protected String doInBackground(String... args) {
preferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
String email = preferences.getString(PhoneNum, "");
String password = preferences.getString(Password, "");
Log.d("email", email);
Log.d("password",password);
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("PhoneNum", email));
params.add(new BasicNameValuePair("password", password));
JSONObject json = jsonParser.makeHttpRequest(URL, "POST", params);
Log.d("Shop JSON", ""+json);
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
progressBar.dismiss();
super.onPostExecute(result);
}
}
}
公共类Mainactivity扩展活动{
//私人按钮;
私有网络视图;
私有静态最终字符串TAG=“Main”;
私人ProgressDialog progressBar;
共享参考偏好;
公共静态最终字符串Email=“emailKey”;
公共静态最终字符串Password=“passKey”;
公共静态最终字符串PhoneNum=“phonekey”;
字符串URL=”http://myweb.com/index.php";
成功;
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
JSONParser JSONParser=新的JSONParser();
@SuppressLint(“NewApi”)/**在首次创建活动时调用。*/@Override
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.web);
this.webview=(webview)findviewbyd(R.id.webView1);
WebSettings=webview.getSettings();
settings.setRenderPriority(RenderPriority.HIGH);
settings.setJavaScriptEnabled(true);
webview.setScrollBarStyle(webview.SCROLLBARS\u外部\u覆盖);
loadUrl(URL);
新建SetSession().execute();
final AlertDialog AlertDialog=新建AlertDialog.Builder(this.create();
//progressBar=ProgressDialog.show(Mainactivity.this,“请稍候,我们正在设置环境”,“正在加载…”);
setWebViewClient(新的WebViewClient(){
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
i(标记“正在处理webview url单击…”);
view.loadUrl(url);
返回true;
}
公共void onPageFinished(WebView视图,字符串url){
Log.i(标记“已完成加载URL:+URL”);
if(progressBar.isShowing()){
progressBar.disclose();
}
}
@抑制警告(“弃用”)
public void onReceivedError(WebView视图、int错误代码、字符串描述、字符串失败URL){
Log.e(标记“错误:+说明”);
Toast.makeText(Shop.this,“噢,不!”+描述,Toast.LENGTH_SHORT.show();
alertDialog.setTitle(“错误”);
alertDialog.setMessage(描述);
alertDialog.setButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
返回;
}
});
alertDialog.show();
}
});
CookieSyncManager.createInstance(此);
CookieManager localCookieManager=CookieManager.getInstance();
如果(Build.VERSION.SDK_INT>=21){
localCookieManager.setAcceptThirdPartyCookies(this.webview,true);
}
如果(Build.VERSION.SDK_INT>=19){
webview.setLayerType(View.LAYER\u TYPE\u硬件,空);
}
否则{
webview.setLayerType(View.LAYER\u TYPE\u软件,空);
}
Log.i(“letzkit360”,“At onCreate”);
webview.getSettings().setCacheMode(1);
}
类SetSession扩展异步任务{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
progressBar=ProgressDialog.show(MainActivity.this,“请稍候,我们正在设置环境”,“正在加载…”);
progressBar.SetUndeterminate(假);
progressBar.setCancelable(真);
progressBar.show();
}
@凌驾
受保护的字符串doInBackground(字符串…args){
preferences=getSharedReferences(“prefs”,Context.MODE\u PRIVATE);
字符串email=preferences.getString(PhoneNum,“”);
字符串密码=preferences.getString(密码“”);
Log.d(“电子邮件”,电子邮件);
Log.d(“密码”,密码);
List params=new ArrayList();
添加(新的BasicNameValuePair(“PhoneNum”,电子邮件));
添加(新的BasicNameValuePair(“密码”,password));
JSONObject json=jsonParser.makeHttpRequest(URL,“POST”,参数);
Log.d(“Shop JSON”,即“+JSON”);
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//TODO自动生成的方法存根
progressBar.disclose();
super.onPostExecute(结果);
}
}
}
这不是PHP,这是JAVA。我添加了PHP标记,因为我使用的是使用PHP的服务器端实现。这就是为什么我添加了标签“PHP”。