bug fixed in updater

This commit is contained in:
Christian S 2015-10-22 20:29:16 +02:00
parent 2200ba240a
commit 83ec2b1255
2 changed files with 108 additions and 106 deletions

View file

@ -41,7 +41,7 @@ public class UpdaterWebService extends IntentService{
String requestString = intent.getStringExtra(REQUEST_STRING);
Log.d(Config.LOGTAG, "AppUpdater: " + requestString);
String responseMessage = "";
String responseMessage;
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
@ -73,23 +73,21 @@ public class UpdaterWebService extends IntentService{
response.getEntity().writeTo(out);
out.close();
responseMessage = out.toString();
}
else{
Log.d(Config.LOGTAG, "AppUpdater: HTTP1:" + statusLine.getReasonPhrase());
} else {
Log.e(Config.LOGTAG, "AppUpdater: HTTP1:" + statusLine.getReasonPhrase());
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
Log.d(Config.LOGTAG, "AppUpdater: HTTP2:" + e);
responseMessage = e.getMessage();
Log.e(Config.LOGTAG, "AppUpdater: HTTP2:" + e);
responseMessage = "";
} catch (IOException e) {
Log.d(Config.LOGTAG, "AppUpdater: HTTP3:" + e);
responseMessage = e.getMessage();
Log.e(Config.LOGTAG, "AppUpdater: HTTP3:" + e);
responseMessage = "";
}catch (Exception e) {
Log.d(Config.LOGTAG, "AppUpdater: HTTP4:" + e);
responseMessage = e.getMessage();
Log.e(Config.LOGTAG, "AppUpdater: HTTP4:" + e);
responseMessage = "";
}

View file

@ -66,13 +66,13 @@ public class UpdaterActivity extends Activity {
registerReceiver(downloadReceiver, filter);
//check of internet is available before making a web service request
if(isNetworkAvailable(this)){
if (isNetworkAvailable(this)) {
Intent msgIntent = new Intent(this, UpdaterWebService.class);
msgIntent.putExtra(UpdaterWebService.REQUEST_STRING, Config.UPDATE_URL);
Toast.makeText(getApplicationContext(),
getText(R.string.checking_for_updates),
Toast.LENGTH_SHORT).show();
getText(R.string.checking_for_updates),
Toast.LENGTH_SHORT).show();
startService(msgIntent);
}
}
@ -97,7 +97,7 @@ public class UpdaterActivity extends Activity {
super.onRestoreInstanceState(savedInstanceState);
}
//check for internet connection
//check for internet connection
private boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
@ -127,103 +127,107 @@ public class UpdaterActivity extends Activity {
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
String reponseMessage = intent.getStringExtra(UpdaterWebService.RESPONSE_MESSAGE);
Log.d(Config.LOGTAG, "AppUpdater: " + reponseMessage);
Log.d(Config.LOGTAG, "AppUpdater: Reponse: " + reponseMessage);
//parse the JSON response
JSONObject responseObj;
try {
responseObj = new JSONObject(reponseMessage);
boolean success = responseObj.getBoolean("success");
//if the reponse was successful check further
if(success){
//Overall information about the contents of a package
//This corresponds to all of the information collected from AndroidManifest.xml.
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
}
catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//get the app version Name for display
final String versionName = pInfo.versionName;
final int versionCode = pInfo.versionCode;
//get the latest version from the JSON string
int latestVersionCode = responseObj.getInt("latestVersionCode");
String latestVersion = responseObj.getString("latestVersion");
String changelog = responseObj.getString("changelog");
//get the lastest application URI from the JSON string
appURI = responseObj.getString("appURI");
//check if we need to upgrade?
if(latestVersionCode > versionCode){
Log.d(Config.LOGTAG, "AppUpdater: update available");
//delete old downloaded version files
File dir = new File(getExternalFilesDir(null), Environment.DIRECTORY_DOWNLOADS);
Log.d(Config.LOGTAG, "AppUpdater - Delete old update files in: " + dir);
if (dir.isDirectory())
{
String[] children = dir.list();
for (int i = 0; i < children.length; i++)
{
new File(dir, children[i]).delete();
}
if (reponseMessage == "" || reponseMessage.isEmpty() || reponseMessage == null) {
Toast.makeText(getApplicationContext(),
getText(R.string.failed),
Toast.LENGTH_LONG).show();
Log.e(Config.LOGTAG, "AppUpdater: error connecting to server");
UpdaterActivity.this.finish();
} else {
Log.d(Config.LOGTAG, "AppUpdater: connecting to server");
//parse the JSON reponse
JSONObject reponseObj;
try {
//if the reponse was successful check further
reponseObj = new JSONObject(reponseMessage);
boolean success = reponseObj.getBoolean("success");
if (success) {
//Overall information about the contents of a package
//This correponds to all of the information collected from AndroidManifest.xml.
PackageInfo pInfo = null;
try {
pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
//enable touch events
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
//get the app version Name for display
final String versionName = pInfo.versionName;
final int versionCode = pInfo.versionCode;
//get the latest version from the JSON string
int latestVersionCode = reponseObj.getInt("latestVersionCode");
String latestVersion = reponseObj.getString("latestVersion");
String changelog = reponseObj.getString("changelog");
//get the lastest application URI from the JSON string
appURI = reponseObj.getString("appURI");
//check if we need to upgrade?
if (latestVersionCode > versionCode) {
Log.d(Config.LOGTAG, "AppUpdater: update available");
//delete old downloaded version files
File dir = new File(getExternalFilesDir(null), Environment.DIRECTORY_DOWNLOADS);
Log.d(Config.LOGTAG, "AppUpdater: delete old update files in: " + dir);
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
new File(dir, children[i]).delete();
}
}
//enable touch events
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
//oh yeah we do need an upgrade, let the user know send an alert message
AlertDialog.Builder builder = new AlertDialog.Builder(UpdaterActivity.this);
builder.setCancelable(false);
//oh yeah we do need an upgrade, let the user know send an alert message
AlertDialog.Builder builder = new AlertDialog.Builder(UpdaterActivity.this);
builder.setCancelable(false);
String UpdateMessageInfo = getResources().getString(R.string.update_available);
builder.setMessage(String.format(UpdateMessageInfo, latestVersion, changelog, versionName))
.setPositiveButton(R.string.update, new DialogInterface.OnClickListener() {
//if the user agrees to upgrade
public void onClick(DialogInterface dialog, int id) {
//disable touch events
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
//start downloading the file using the download manager
downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Uri Download_Uri = Uri.parse(appURI);
DownloadManager.Request request = new DownloadManager.Request(Download_Uri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
request.setAllowedOverRoaming(false);
request.setTitle("Conversations Update");
request.setDestinationInExternalFilesDir(UpdaterActivity.this, Environment.DIRECTORY_DOWNLOADS, "Conversations" + versionName + ".apk");
downloadReference = downloadManager.enqueue(request);
Toast.makeText(getApplicationContext(),
getText(R.string.download_started),
Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.remind_later, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
UpdaterActivity.this.finish();
}
});
//show the alert message
builder.create().show();
}
else
{
String UpdateMessageInfo = getResources().getString(R.string.update_available);
builder.setMessage(String.format(UpdateMessageInfo, latestVersion, changelog, versionName))
.setPositiveButton(R.string.update, new DialogInterface.OnClickListener() {
//if the user agrees to upgrade
public void onClick(DialogInterface dialog, int id) {
//disable touch events
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
//start downloading the file using the download manager
downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
Uri Download_Uri = Uri.parse(appURI);
DownloadManager.Request request = new DownloadManager.Request(Download_Uri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
request.setAllowedOverRoaming(false);
request.setTitle("Conversations Update");
request.setDestinationInExternalFilesDir(UpdaterActivity.this, Environment.DIRECTORY_DOWNLOADS, "Conversations" + versionName + ".apk");
downloadReference = downloadManager.enqueue(request);
Toast.makeText(getApplicationContext(),
getText(R.string.download_started),
Toast.LENGTH_LONG).show();
}
})
.setNegativeButton(R.string.remind_later, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
UpdaterActivity.this.finish();
}
});
//show the alert message
builder.create().show();
} else {
Toast.makeText(getApplicationContext(),
getText(R.string.no_update_available),
Toast.LENGTH_SHORT).show();
Log.d(Config.LOGTAG, "AppUpdater: no update available");
UpdaterActivity.this.finish();
}
} else {
Toast.makeText(getApplicationContext(),
getText(R.string.no_update_available),
Toast.LENGTH_SHORT).show();
Log.d(Config.LOGTAG, "AppUpdater: no update available");
getText(R.string.failed),
Toast.LENGTH_LONG).show();
Log.e(Config.LOGTAG, "AppUpdater: contact to server not successfull");
UpdaterActivity.this.finish();
}
} else {
Toast.makeText(getApplicationContext(),
getText(R.string.failed),
Toast.LENGTH_LONG).show();
Log.d(Config.LOGTAG, "AppUpdater: contact to server not successfull");
UpdaterActivity.this.finish();
} catch (JSONException e) {
e.printStackTrace();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@ -237,7 +241,7 @@ public class UpdaterActivity extends Activity {
public void onReceive(Context context, Intent intent) {
//check if the broadcast message is for our Enqueued download
long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if(downloadReference == referenceId){
if (downloadReference == referenceId) {
Log.d(Config.LOGTAG, "AppUpdater: Downloading of the new app version complete. Starting installation");
//start the installation of the latest version