36

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

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

コード:

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);
4

5 に答える 5

22

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/

于 2013-03-14T11:53:10.460 に答える
6

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
于 2016-12-10T23:04:08.140 に答える
5

フラグ付きのアラートダイアログを作成してみましたか?flag_show_when_lockedでうまくいくはずです。このスレッドを参照してください。より詳細な回答はここにあります。 Androidロック画面ウィジェット

于 2012-06-13T15:05:37.840 に答える
3

この行を通知ビルダーに追加することでこれを修正しました

builder.setOngoing(true);

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

クレジット:MarianKlühspies(リンク

于 2019-02-21T06:23:45.360 に答える
2

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

InstallWidgetReceiverのAndroidプラットフォームのソースコードを4.4.3まで見てみると、次のようになります。

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);を設定するアクティビティを使用することです。

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

于 2014-06-13T00:08:15.783 に答える