单击通知图标上的锁定屏幕上方的Android显示活动

时间:2016-08-17 17:54:04

标签: android android-notifications lockscreen notificationmanager

我们需要显示信息而无需显示解锁屏幕。 我们通常可以通过以下代码执行此操作:

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

但在这种情况下,应该点击通知栏中的通知图标。如何才能做到这一点?

我有一个运行的服务,在屏幕解锁后工作正常。它会打开图标点击活动。但是当屏幕被锁定时我无法做到这一点。

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());
    }
}

1 个答案:

答案 0 :(得分: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