Почему полноэкранное намерение не отображается на экране блокировкиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему полноэкранное намерение не отображается на экране блокировки

Сообщение Anonymous »

Я знаю, что этот вопрос задают много раз. Я уже перепробовал все ответы, но не смог найти, что не так с моим кодом.
Я пытаюсь показать уведомление при получении входящего звонка. Я запускаю службу переднего плана при получении push-уведомления для прослушивания входящих вызовов. Через некоторое время поступает фактический входящий вызов, и я показываю уведомление, используя приведенный ниже код. Проблема в том, что это уведомление должно отображаться в полноэкранном режиме, когда телефон заблокирован. Вместо этого он только вибрирует. Когда я разблокирую экран, я вижу обычное уведомление на панели уведомлений. Если телефон разблокирован, я также вижу всплывающее уведомление.
fun createIncomingCallChannel(
context: Context,
notificationManager: NotificationManagerCompat
) {
// Create incoming calls notification channel
val id = INCOMING_CALL_ID
val name = context.getString(R.string.notification_channel_incoming_call_name)
val description = context.getString(R.string.notification_channel_incoming_call_name)
val channel = NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH)
channel.description = description
channel.enableVibration(true)
channel.enableLights(true)
channel.setShowBadge(true)
notificationManager.createNotificationChannel(channel)
}


fun createIncomingCallNotification(
context: Context,
notificationsManager: NotificationsManager
): Notification {
val incomingCallNotificationIntent = Intent(context, CallActivity::class.java)
incomingCallNotificationIntent.addFlags(
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_USER_ACTION or Intent.FLAG_FROM_BACKGROUND
)
val pendingIntent = PendingIntent.getActivity(
context,
0,
incomingCallNotificationIntent,
PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val displayName: String = "Foo"
val address: String = "Bar"
val info: String = "Incoming Call"

val notificationLayoutHeadsUp = RemoteViews(
context.packageName,
R.layout.call_incoming_notification_heads_up
)
notificationLayoutHeadsUp.setTextViewText(R.id.caller, displayName)
notificationLayoutHeadsUp.setTextViewText(R.id.sip_uri, address)
notificationLayoutHeadsUp.setTextViewText(R.id.incoming_call_info, info)

val builder = NotificationCompat.Builder(
context,
INCOMING_CALL_ID
)
.setStyle(NotificationCompat.DecoratedCustomViewStyle())
.addPerson(Person.Builder()
.setName(displayName)
.setKey(displayName)
.build())
.setSmallIcon(R.drawable.ic_stat_onesignal_default)
.setContentTitle(displayName)
.setContentText(context.getString(R.string.incoming_call_notification_title))
.setCategory(NotificationCompat.CATEGORY_CALL)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setWhen(System.currentTimeMillis())
.setAutoCancel(false)
.setShowWhen(true)
.setOngoing(true)
.setFullScreenIntent(pendingIntent, true)
.addAction(notificationsManager.getCallDeclineAction(notifiable))
.addAction(notificationsManager.getCallAnswerAction(notifiable))
.setCustomHeadsUpContentView(notificationLayoutHeadsUp)
.setContentIntent(pendingIntent)

return builder.build()
}



...


при создании CallActivity:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
setShowWhenLocked(true)
setTurnScreenOn(true)

val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
keyguardManager.requestDismissKeyguard(this, null)
}
super.onCreate(savedInstanceState)


Подробнее здесь: https://stackoverflow.com/questions/777 ... ock-screen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»