Skip to content

Commit 5542455

Browse files
authored
Merge pull request #96 from mngoe/feature-31903
add update app process
2 parents 3d5d826 + 1c45248 commit 5542455

File tree

6 files changed

+181
-3
lines changed

6 files changed

+181
-3
lines changed

claimManagement/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ android {
2424

2525
defaultConfig {
2626
applicationId "org.openimis.imisclaims"
27-
minSdkVersion 21
27+
minSdkVersion 26
2828
targetSdkVersion 32
2929
versionCode 4
3030
versionName "2.0.1"
@@ -61,6 +61,7 @@ android {
6161
buildConfigField "String", "REST_API_PREFIX", '"rest"'
6262
buildConfigField "String", "RAR_PASSWORD", '")(#$1HsD"'
6363
buildConfigField "String", "API_VERSION", '"3"'
64+
resValue "string", "release_tag", "release/25.04"
6465
}
6566

6667
productFlavors {

claimManagement/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
android:name="android.permission.READ_CALL_LOG"/>
2020
<uses-permission
2121
android:name="android.permission.READ_CONTACTS"/>
22+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
2223

2324
<application
2425
android:name=".Global"

claimManagement/src/main/java/org/openimis/imisclaims/SynchronizeActivity.java

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,38 @@
11
package org.openimis.imisclaims;
22

33
import android.app.Activity;
4+
import android.app.AlertDialog;
5+
import android.app.DownloadManager;
46
import android.app.ProgressDialog;
57
import android.content.Context;
68
import android.content.Intent;
79
import android.net.Uri;
810
import android.os.Bundle;
911
import androidx.annotation.Nullable;
12+
13+
import android.os.Environment;
1014
import android.view.MenuItem;
1115
import android.view.View;
1216
import android.widget.RelativeLayout;
1317
import android.widget.TextView;
18+
import android.widget.Toast;
1419

1520
import org.json.JSONArray;
1621
import org.json.JSONException;
22+
import org.json.JSONObject;
23+
import org.openimis.imisclaims.network.exception.HttpException;
1724
import org.openimis.imisclaims.tools.Log;
1825
import org.openimis.imisclaims.tools.StorageManager;
1926
import org.openimis.imisclaims.util.StreamUtils;
2027
import org.openimis.imisclaims.util.UriUtils;
2128

29+
import java.io.BufferedReader;
2230
import java.io.IOException;
2331
import java.io.InputStream;
32+
import java.io.InputStreamReader;
2433
import java.io.OutputStream;
34+
import java.net.HttpURLConnection;
35+
import java.net.URL;
2536
import java.util.ArrayList;
2637

2738
public class SynchronizeActivity extends ImisActivity {
@@ -31,7 +42,7 @@ public class SynchronizeActivity extends ImisActivity {
3142
ArrayList<String> broadcastList;
3243

3344
TextView tvUploadClaims, tvZipClaims;
34-
RelativeLayout uploadClaims, zipClaims, importMasterData, downloadMasterData;
45+
RelativeLayout uploadClaims, zipClaims, importMasterData, downloadMasterData, checkUpdate;
3546

3647
ProgressDialog pd;
3748
Uri exportUri;
@@ -64,6 +75,7 @@ protected void onCreate(Bundle savedInstanceState) {
6475
zipClaims = findViewById(R.id.zip_claims);
6576
importMasterData = findViewById(R.id.importMasterData);
6677
downloadMasterData = findViewById(R.id.downloadMasterData);
78+
checkUpdate = findViewById(R.id.checkUpdate);
6779

6880
uploadClaims.setOnClickListener(view -> doLoggedIn(this::confirmUploadClaims));
6981
zipClaims.setOnClickListener(view -> confirmXMLCreation());
@@ -72,6 +84,7 @@ protected void onCreate(Bundle savedInstanceState) {
7284
downloadMasterData.setOnClickListener(view -> {
7385
}); //TODO Not yet implemented
7486
downloadMasterData.setVisibility(View.GONE);
87+
checkUpdate.setOnClickListener(view -> CheckUpdate());
7588

7689
}
7790

@@ -205,4 +218,107 @@ public void exportClaims() {
205218
pd = ProgressDialog.show(this, "", getResources().getString(R.string.Processing));
206219
SynchronizeService.exportClaims(this);
207220
}
221+
222+
public void CheckUpdate(){
223+
if (global.isNetworkAvailable()) {
224+
String progress_message = getResources().getString(R.string.Checking_For_Updates);
225+
pd = ProgressDialog.show(this, getResources().getString(R.string.initializing), progress_message);
226+
227+
Thread thread = new Thread(() -> {
228+
try {
229+
//get current release
230+
String currentVersion = BuildConfig.VERSION_NAME; //
231+
boolean updateAvailable = false;
232+
233+
//get all github releases
234+
URL url = new URL("https://api.github.com/repos/openimis/claims_android_app_java/releases");
235+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
236+
connection.setRequestProperty("Accept", "application/vnd.github.v3+json");
237+
connection.setReadTimeout(60_000);
238+
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
239+
StringBuilder response = new StringBuilder();
240+
String line;
241+
while ((line = reader.readLine()) != null) {
242+
response.append(line);
243+
}
244+
reader.close();
245+
connection.disconnect();
246+
247+
//get lastest version
248+
JSONArray jsonarray = new JSONArray(response.toString());
249+
String lastVersion = "";
250+
String tag_name = "";
251+
for (int i = 0; i < jsonarray.length(); i++){
252+
JSONObject releaseObj = jsonarray.getJSONObject(i);
253+
if(releaseObj.getString("tag_name").equals(getResources().getString(R.string.release_tag))){
254+
tag_name = releaseObj.getString("tag_name");
255+
String releaseName = releaseObj.getString("name");
256+
if(!releaseName.equals(currentVersion)){
257+
lastVersion = releaseName;
258+
updateAvailable = true;
259+
}
260+
}
261+
}
262+
263+
//print result
264+
boolean finalUpdateAvailable = updateAvailable;
265+
String finalLastVersion = lastVersion;
266+
String finalTagName = tag_name;
267+
runOnUiThread(() -> {
268+
pd.dismiss();
269+
if (finalUpdateAvailable) {
270+
new AlertDialog.Builder(this)
271+
.setTitle(getResources().getString(R.string.updateAvailable))
272+
.setMessage(getResources().getString(R.string.newVersion) + " " + finalLastVersion )
273+
.setPositiveButton(getResources().getString(R.string.download), (dialog, which) -> downloadUpdate(finalLastVersion, finalTagName))
274+
.setNegativeButton(getResources().getString(R.string.cancel), null)
275+
.show();
276+
} else {
277+
Toast.makeText(this,
278+
getResources().getString(R.string.haveLastVersion) + " " + currentVersion,
279+
Toast.LENGTH_LONG).show();
280+
}
281+
});
282+
} catch (HttpException e){
283+
runOnUiThread(() -> {
284+
pd.dismiss();
285+
Toast.makeText(this,
286+
getResources().getString(R.string.Error),
287+
Toast.LENGTH_SHORT).show();
288+
});
289+
} catch (Exception e) {
290+
runOnUiThread(() -> {
291+
pd.dismiss();
292+
Toast.makeText(this,
293+
e.getMessage(),
294+
Toast.LENGTH_SHORT).show();
295+
});
296+
}
297+
});
298+
thread.start();
299+
} else {
300+
showDialog(getResources().getString(R.string.CheckInternet));
301+
}
302+
}
303+
304+
public void downloadUpdate(String lastVersion, String tagName) {
305+
try {
306+
String apkUrl = "https://github.com/openimis/claims_android_app_java/releases/download/" + tagName + "/claimManagement-"+ BuildConfig.FLAVOR + "-debug.apk";
307+
308+
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(apkUrl))
309+
.setTitle(getResources().getString(R.string.claimUpdate))
310+
.setDescription(getResources().getString(R.string.getVersion) + lastVersion)
311+
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "claimManagement-"+ BuildConfig.FLAVOR + "-debug.apk")
312+
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
313+
314+
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
315+
manager.enqueue(request);
316+
317+
Toast.makeText(this, getResources().getString(R.string.downloading), Toast.LENGTH_SHORT).show();
318+
319+
} catch (Exception e) {
320+
Toast.makeText(this, getResources().getString(R.string.downloadUpdateFail), Toast.LENGTH_SHORT).show();
321+
Log.e("DownloadUpdate", "Erreur: ", e);
322+
}
323+
}
208324
}

claimManagement/src/main/res/layout/activity_synchronize.xml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,41 @@
159159

160160
</RelativeLayout>
161161

162+
<TextView
163+
android:layout_width="match_parent"
164+
android:layout_height="wrap_content"
165+
android:typeface="monospace"
166+
android:fontFamily="sans-serif-light"
167+
android:textSize="25sp"
168+
android:layout_marginLeft="3dp"
169+
android:layout_marginTop="30dp"
170+
android:textColor="@color/Black"
171+
android:text="@string/Update"/>
172+
173+
<RelativeLayout
174+
android:id="@+id/checkUpdate"
175+
android:layout_width="match_parent"
176+
android:layout_height="wrap_content"
177+
android:background="@drawable/orange_corner"
178+
android:orientation="vertical"
179+
android:paddingLeft="6dp"
180+
android:paddingRight="6dp"
181+
android:layout_marginTop="30dp">
182+
183+
<TextView
184+
android:id="@+id/checkUpdateLabel"
185+
android:layout_width="match_parent"
186+
android:layout_height="40dp"
187+
android:background="@drawable/side_nav_bar"
188+
android:fontFamily="sans-serif-light"
189+
android:gravity="center"
190+
android:text="@string/checkUpdate"
191+
android:textAlignment="center"
192+
android:textColor="@color/white"
193+
android:textSize="15sp"
194+
android:typeface="monospace" />
195+
196+
</RelativeLayout>
197+
162198
</LinearLayout>
163199
</LinearLayout>

claimManagement/src/main/res/values-fr/strings.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,4 +203,16 @@
203203
<string name="Healed">Guéri</string>
204204
<string name="Deceased">Décédé</string>
205205
<string name="Escaped">Échappé</string>
206+
<string name="Update">Mise à jour</string>
207+
<string name="checkUpdate">Vérifier la mise à jour</string>
208+
<string name="Error">Une erreur s\'est produite</string>
209+
<string name="downloading">Téléchargement en cours</string>
210+
<string name="downloadUpdateFail">Echec de la mise à jour</string>
211+
<string name="download">Télécharger</string>
212+
<string name="cancel">Annuler</string>
213+
<string name="updateAvailable">Mise à jour disponible</string>
214+
<string name="haveLastVersion">Vous avez la dernière version </string>
215+
<string name="newVersion">Nouvelle version </string>
216+
<string name="claimUpdate">Mise à jour Claims</string>
217+
<string name="getVersion">Téléchargement version </string>
206218
</resources>

claimManagement/src/main/res/values/strings.xml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,17 @@
238238
<string name="Healed">Healed</string>
239239
<string name="Deceased">Deceased</string>
240240
<string name="Escaped">Escaped</string>
241-
241+
<string name="Update">Update</string>
242+
<string name="checkUpdate">Check update</string>
243+
<string name="check">Vérification</string>
244+
<string name="Error">Error occurred</string>
245+
<string name="downloading">Downloading</string>
246+
<string name="downloadUpdateFail">Download update failed</string>
247+
<string name="download">Download</string>
248+
<string name="cancel">Cancel</string>
249+
<string name="updateAvailable">Update available</string>
250+
<string name="haveLastVersion">You have the last version </string>
251+
<string name="newVersion">New version </string>
252+
<string name="claimUpdate">Update Claims</string>
253+
<string name="getVersion">Downloading version </string>
242254
</resources>

0 commit comments

Comments
 (0)