0

We need to display information without needing to show the unlock screen. We are able to do this normally by code like:

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON

But in this case it should be on click on Notification icon in the notification bar. How can this be done?


I have a service running which is working fine after the screen is unlocked. It opens up the activity on icon click. But I'm unable to do that when the screen is locked which is needed.

public class notifysrvc extends  Service {
    @Override
    public void onCreate() {
        super.onCreate();
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        showRecordingNotification();
        return Service.START_STICKY;
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show();
    }
    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }
    private void showRecordingNotification() {
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.drawable.lifegaurdicon12)
                        .setContentTitle("Emergency")
                        .setOngoing(true)
                        .setPriority(Notification.PRIORITY_MAX)
                        .setContentText("Click here!");
// Creates an explicit intent for an Activity in your app
        Intent resultIntent = new Intent(this, Menu.class);
//Tried this add flags to make it work
resultIntent.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
        stackBuilder.addParentStack(Menu.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
                );
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1, mBuilder.build());
    }
}
Laurel
  • 5,965
  • 14
  • 31
  • 57

1 Answers1

0
I tried it using remoteviews as suggested in few examples but it just doesn't work.
I tried this but it  just doesn't work

        // NOTE: while creating pendingIntent: requestcode must be different!
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
                .setVisibility(Notification.VISIBILITY_PUBLIC)
                .setSmallIcon(R.drawable.ic_launcher).setContentTitle("My Title")
                .setContentText("Service running in the background")
                .setOngoing(true);
        Intent openIntent = new Intent(this, MainActivity.class);


        PendingIntent pOpenIntent = PendingIntent.getActivity(this, 0, openIntent, 0);
        mBuilder.setContentIntent(pOpenIntent);
        // Gets an instance of the NotificationManager service
        NotificationManager mNotifyMgr =
                (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Builds the notification and issues it.
        mNotifyMgr.notify(1090, mBuilder.build());
// Notification with exit button if supported
        String ACTION_NOTIFICATION_EXITACTIVITY = "com.example.circle.myapplication.shownotifyactivity";
        Intent exitIntent = new Intent();
        exitIntent.setAction(ACTION_NOTIFICATION_EXITACTIVITY);
        PendingIntent pExitIntent = PendingIntent.getBroadcast(this, 1, exitIntent, 0);
        RemoteViews view = new RemoteViews(getPackageName(), R.layout.activity_shownotifyactivity);
        view.setOnClickPendingIntent(R.id.notification_click, pExitIntent);
        mBuilder.setContent(view);
I tried the example [http://stackoverflow.com/questions/27673943/notification-action-button-not-clickable-in-lock-screen?answertab=active#tab-top][1]


  [1]: http://stackoverflow.com/questions/27673943/notification-action-button-not-clickable-in-lock-screen?answertab=active#tab-top