Introduction
This article shows how to download multiple files using progressBar, Notification, and AsyncTask
.
Using the code
- The first thing to do is check the connection using the
isInternetConnectionActive(context)
method. If this method return true, then create a notification for showing a message:
private static final int HELLO_ID = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(isInternetConnectionActive(getApplicationContext())) {
showNotification(1);
}
else {
showNotification(0);
}
}
private boolean isInternetConnectionActive(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if(networkInfo == null || !networkInfo.isConnected()) {
return false;
}
return true;
}
private void showNotification(int status){
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(ns);
int icon = android.R.drawable.ic_media_play;
CharSequence ticketText = "Connection";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, ticketText, when);
Context context = getApplicationContext();
CharSequence contentTitle = "Internet Connection";
CharSequence contentText = "";
if(status == 1){
contentText = "Internet connected, Are you Update your Application?";
}
else{
contentText = "Internet disconnected!";
}
Intent notificationIntent = new Intent(this, NotifyPage.class);
notificationIntent.addFlags(Notification.FLAG_ONGOING_EVENT);
PendingIntent contentIntent =
PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(HELLO_ID, notification);
}
- In the
showNotification()
method, we define an Intent
, declare its second parameter as NotifyPage.class
. When the user selects a notification, call the activity NotifyPage
. For this activity, design an XML file that includes two buttons: a button that creates another notification for showing a progressBar()
and a button to cancel download operations and come back home.
public void clearNotification(View v) {
mNotificationManager.cancel(1);
finish();
}
public void UpdateApplication(View v){
mNotificationManager.cancel(1);
new DownloadTask(this).execute("http://animal.discovery.com/" +
"birds/peacock/pictures/peacock-picture.jpg");
}
- In the
DownloadTask
class, you can send several files but in this example, we just send a file address. In fact, with execute(url)
, you call doInBackground()
that runs downloading operations in the background. You can download notification calling using four methods in the DownloadTask
class:
public DownloadTask(Context context){
this.context = context;
mNotificationHelper = new NotificationHelper(context);
}
protected void onPreExecute(){
mNotificationHelper.createNotification();
}
protected void onProgressUpdate(Integer... progress) {
mNotificationHelper.progressUpdate(progress[0]);
}
protected void onPostExecute(Void result) {
mNotificationHelper.completed();
}
Remember to define permissions related to connection in AndroidManifest.xml: android.permission.INTERNET
- android.permission.ACCESS_NETWORK_STATE
.
Points of Interest
This article hopefully taught you how to create a status bar notification and use a AsyncTask
class for downloading or uploading files.