web-dev-qa-db-ja.com

Android画面に通知を表示する方法

私はプッシュ通知に取り組んでおり、それを実装してステータスバーに表示することができます。私が直面している問題は、電話がロックされていても表示したいということです。ドラッグしてロックを解除」)、そのような通知を見てきましたが、その例は見つかりません。

例:不在着信を受信したときと同様に、画面のロックボタンの下に表示されます。

コード:

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
int icon = R.drawable.icon_launcher;
CharSequence tickerText = "MyApplication";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE|Notification.DEFAULT_LIGHTS;;
CharSequence contentTitle = this.title;
CharSequence contentText = this.message;
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
mNotificationManager.notify(NOTICE_ID, notification);
28
user606669

フラグ付きのアラートダイアログを作成しようとしましたか? flag_show_when_lockedがトリックを行うはずです。このスレッドを参照してください、ここでより詳細な答えを見つける必要があります。 Android Lock Screen Widget

5
VirtualProdigy

NotificationCompat.Builderを使用して通知を作成する

NotificationCompat.Builder mBuilder =   new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.ic_launcher) // notification icon
            .setContentTitle("Notification!") // title for notification
            .setContentText("Hello Word") // message for notification
            .setAutoCancel(true); // clear notification after click
Intent intent = new Intent(this, MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,0,intent,Intent.FLAG_ACTIVITY_NEW_TASK);
mBuilder.setContentIntent(pi);
NotificationManager mNotificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(0, mBuilder.build());

ロックされた画面にプッシュ通知 http://www.hongkiat.com/blog/Android-lock-screen-notifications/

15
Kirit Vaghela

NotificationCompat.Builderを使用して通知を作成しますが、次のように公開されていることを確認してください

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder
        .setContentTitle("Title")
        .setContentText("content")
        .setSmallIcon(R.mipmap.ic_launcher)
        .setVisibility(NotificationCompat.VISIBILITY_PUBLIC);//to show content in lock screen
3
Mohamad Bdour

表示された通知は、実際にはカスタムウィジェットのホストロック画面に配置されたウィジェットである可能性があります。

4.4.3以降のInstallWidgetReceiverのAndroidプラットフォームソースコードを見ると、

https://Android.googlesource.com/platform/packages/apps/Launcher3/+/master/src/com/Android/launcher3/InstallWidgetReceiver.Java

このメモは著者によって表示されます。

/ ** *外部アプリがウィジェットを配置できるように処理するために、後でこれを具体化する可能性がありますが、現時点では、他の場所でチェックするためのアクションを公開したいだけです。 * /

また、InstallWidgetReceiver.Javaは、実際にはInstallShortCutReceiver.Javaと同じようにGoogleによって具体化されていないことがわかります。したがって、少なくとも4.4.3までは、たとえばInstallShortCutReceiverを使用してホーム画面にショートカットを追加するのと同じ方法で、ネイティブロック画面にウィジェットを追加することはできません。

ウィジェットホストとして独自のロック画面アプリを構築し、ネイティブの代わりにユーザーがインストールしない限り、ウィジェットを使用すると運が悪くなる可能性があります。

ただし、別のアプローチはgetWindow()。addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);を設定するアクティビティのみを使用することです。

これにより、画面がロックされているかどうかに関係なく、アクティビティが表示されます。画面がロックされているときにこのアクティビティを閉じると、ロックされた画面が表示されます。

2
Sani Elfishawy

この行を通知ビルダーに追加して、これを修正しました

builder.setOngoing(true);

また、通知をユーザーがキャンセルできないようにしますが、問題は解決します。

クレジット:MarianKlühspies( link

1
Alex Misiulia