在我的Android应用程序中,我使用的是加载屏幕,由Async任务处理。在此任务的后台,我想在服务器中存在升级版本时显示警报。 如果有任何方法可以在android中完成,请你告诉我。
代码是
public class Task扩展了AsyncTask {
// can use UI thread here
protected void onPreExecute() {
// this.dialog.setMessage("Loading...");
prgbar.setVisibility(View.VISIBLE);
// this.dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
final UpGradation upgrade=(UpGradation) ParserServiceImpl.getUpgrade(); //check this method name correctly.
if(upgrade != null)
{
try {
pInfo = getPackageManager().getPackageInfo("com.docomo.aptv", PackageManager.GET_META_DATA);
String temp = pInfo.versionName;
int pversion= pInfo.versionCode;
int upversion=Integer.parseInt(upgrade.getVersion());
Log.i("VALUE RETURNED",""+pversion);
Log.i("jayantha","version name"+pInfo.versionName);
Log.i("jayanth","version code"+pInfo.versionCode);
if(pversion!=upversion)
{
final AlertDialog alert = new AlertDialog.Builder(context).create();
alert.setTitle("Updates");
alert.setMessage("An updated version of the application is present.Do you wish to download.");
alert.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alert.dismiss();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(upgrade.getURL().trim()));
startActivity(i);
finish();
} });
alert.setButton2("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
return;
}
});
alert.setIcon(R.drawable.application_icon_50x50);
alert.setCancelable(false);
alert.show();
}
}
catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
请转发您的建议。
提前致谢:)
答案 0 :(得分:2)
您无法向doInBackground()方法显示警报和对话框。我们使用postProgress()并在onProgressUpdate()中执行它,或者等待afterExecuted()从主UI线程执行这些操作。
答案 1 :(得分:0)
在显示提醒之前,您有finish()
当前活动。并且你已导航到另一个活动......这就是问题所在。
检查此代码段。在显示警报之前出现。
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(upgrade.getURL().trim()));
startActivity(i);
finish();