我的要求:
在我的Android项目中,我正在使用javamail连接到gmail。 ,表示它已连接到gmail。然后将进入下一个活动。否则,它将关闭进度对话框并显示祝酒词- “某事不对劲”
所以我有这个-
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
pdialog = ProgressDialog.show(context, "", "Please wait...", true);
session = Session.getDefaultInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
RetreiveFeedTask task = new RetreiveFeedTask();
task.execute();
}
});
}
class RetreiveFeedTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try{
Transport transport = session.getTransport("smtp");
// Enter your correct gmail UserID and Password
transport.connect("smtp.gmail.com", username, password);
} catch(Exception e) {
//e.printStackTrace();
Toast.makeText(context, "something is wrong", Toast.LENGTH_SHORT).show();
}
return null;
}
@Override
protected void onProgressUpdate(Void... result) {
pdialog.show();
}
@Override
protected void onPostExecute(String result) {
pdialog.dismiss();
iget = new Intent(context,NextScreen.class);
startActivity(iget);
}
}
但是问题是:-如果它连接到gmail id,那么它将转到下一个屏幕...如果我输入了错误的用户名/密码,则它会崩溃..我的代码中的问题出在哪里?
Toast
在doInBackground()
是问题。
你什么都做不了
UI operations in doInBackground()
根据显示的标记,everythingOk=true/false
向onPostExecute()
&返回一些标记(如)Toast
。
class RetreiveFeedTask extends AsyncTask<String, Void, Boolean> {
boolean everythingOk=false;
@Override
protected Boolean doInBackground(String... params) {
try{
everythingOk=true;
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", username, password);
} catch(Exception e) {
everythingOk=false;
}
return everythingOk;
}
@Override
protected void onProgressUpdate(Void... result) {
pdialog.show();
}
@Override
protected void onPostExecute(Boolean result) {
pdialog.dismiss();
if(result==true){
iget = new Intent(context,NextScreen.class);
startActivity(iget);
}
else{
Toast.makeText(context, "something is worng", Toast.LENGTH_SHORT).show();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句