Skip to main content

Android - Notifications - 2

Start Services from Notification


widget.xml

 <?xml version="1.0" encoding="UTF-8"?>  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:layout_width="fill_parent"  
   android:layout_height="fill_parent"  
   android:gravity="center"  
   android:orientation="horizontal" >  
   <TextView  
     android:id="@+id/textView1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:gravity="center"  
     android:text="DJ notification"  
     android:textAppearance="?android:attr/textAppearanceMedium" />  
   <Button  
     android:id="@+id/button1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content"  
     android:text="Start Service" />  
 </LinearLayout>  

Notification code:


 RemoteViews remoteViews = new RemoteViews(getPackageName(),  
                     R.layout.widget);  
           NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(  
                     this).setSmallIcon(R.drawable.ic_launcher).setContent(  
                     remoteViews);  
           // Creates an explicit intent for an Activity in your app  
           Intent resultIntent = new Intent(this, test.class);  
           Intent intent = new Intent(getApplicationContext(), TempServices.class);  
     PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);  
     Log.e("Pending Intent = ","" + pendingIntent.toString());  
           // The stack builder object will contain an artificial back stack for  
           // the  
           // started Activity.  
           // This ensures that navigating backward from the Activity leads out of  
           // your application to the Home screen.  
           TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);  
           // Adds the back stack for the Intent (but not the Intent itself)  
           stackBuilder.addParentStack(test.class);  
           // Adds the Intent that starts the Activity to the top of the stack  
           stackBuilder.addNextIntent(resultIntent);  
           PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,  
                     PendingIntent.FLAG_UPDATE_CURRENT);  
           remoteViews.setOnClickPendingIntent(R.id.textView1, resultPendingIntent);  
           remoteViews.setOnClickPendingIntent(R.id.button1, pendingIntent);  
           NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  
           // mId allows you to update the notification later on.  
           mNotificationManager.notify(100, mBuilder.build());  

TempServices class (File Download):


 package com.example.uploadfile;  
 import android.app.NotificationManager;  
 import android.app.Service;  
 import android.content.Context;  
 import android.content.Intent;  
 import android.os.IBinder;  
 import android.support.v4.app.NotificationCompat;  
 import android.support.v4.app.NotificationCompat.Builder;  
 import android.util.Log;  
 public class TempServices extends Service {  
      protected static final int ID = 100;  
      private NotificationManager mNotifyManager;  
      private Builder mBuilder;  
      @Override  
      public IBinder onBind(Intent intent) {  
           // TODO Auto-generated method stub  
           return null;  
      }  
      @Override  
      public int onStartCommand(Intent intent, int flags, int startId) {  
           // TODO Auto-generated method stub  
           mNotifyManager = (NotificationManager) getApplicationContext()  
                     .getSystemService(Context.NOTIFICATION_SERVICE);  
           mBuilder = new NotificationCompat.Builder(this);  
           mBuilder.setContentTitle("Picture Download")  
                     .setContentText("Download in progress")  
                     .setSmallIcon(R.drawable.ic_launcher);  
           // Start a lengthy operation in a background thread  
           new Thread(new Runnable() {  
                @Override  
                public void run() {  
                     int incr;  
                     // Do the "lengthy" operation 20 times  
                     for (incr = 0; incr <= 100; incr += 5) {  
                          // Sets the progress indicator to a max value, the  
                          // current completion percentage, and "determinate"  
                          // state  
                          mBuilder.setProgress(100, incr, false);  
                          // Displays the progress bar for the first time.  
                          mNotifyManager.notify(0, mBuilder.build());  
                          // Sleeps the thread, simulating an operation  
                          // that takes time  
                          try {  
                               // Sleep for 5 seconds  
                               Thread.sleep(5 * 1000);  
                          } catch (InterruptedException e) {  
                               Log.e("error-->", "sleep failure");  
                          }  
                     }  
                     // When the loop is finished, updates the notification  
                     mBuilder.setContentText("Download complete")  
                     // Removes the progress bar  
                               .setProgress(0, 0, false);  
                     mNotifyManager.notify(ID, mBuilder.build());  
                }  
           }  
           // Starts the thread by calling the run() method in its Runnable  
           ).start();  
           return super.onStartCommand(intent, flags, startId);  
      }  
 }  

Comments

Popular posts from this blog

How to create Android Facebook Key Hash

Download openSSl  Extract it in C:/ drive now Open CMD goes to  C:\Program Files\Java\jdk1.7.0\bin using cd C:\Program Files\Java\jdk1.7.0\bin $ keytool - exportcert - alias androiddebugkey - keystore "C:\user\dj-android\.android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 - binary | "C:\OpenSSL\bin\openssl" base64 You will be prompted for a password. This should be 'android' without quotes. You'll then be given a key hash of 30 characters or so. (If you are  not  prompted for a password, something is wrong and you must check your paths above to ensure the  debug.keystore  is present.)

Stop Babysitting your AI Coding Agent Every Single Session

  Watched a video by DSquaredLabs on " No more re-explaining: Give your AI agent a memory graph " — here's what stuck with me and why I think this three-tool system is worth your attention If you work on a large codebase with AI coding tools, you already know the ritual. Open a new chat, paste your file structure, explain your stack, describe how the modules connect — and repeat the whole thing tomorrow. It is not a minor inconvenience. It is a compounding productivity tax that gets worse as your project grows. This article breaks down a three-tool system designed to fix exactly that. If you want the full walkthrough with a live demo on a real monorepo, the video at the bottom covers everything in depth — but the core concepts are worth understanding before you dive in. The Problem With How Most Developers Use AI Today Most AI-assisted coding workflows are missing three things that every good engineering team actually has: A map of the codebase A process for how w...

simple Canvas Drawing Example ANDROID

F Download Code Create New Android Project: in your Main Activity: Download Code Click Here .