Есть странный трюк, который вы можете сделать со слушателями уведомлений: прослушивайте все уведомления, создавая службу, всякий раз, когда поступает вызов, он обязательно будет показывать уведомление, чтобы спросить пользователя, брать трубку или нет.
Создать сервис
class AutoCallPickerService : NotificationListenerService() {
override fun onNotificationPosted(sbn: StatusBarNotification?) {
super.onNotificationPosted(sbn)
sbn?.let {
it.notification.actions?.let { actions ->
actions.iterator().forEach { item ->
if (item.title.toString().equals("Answer", true)) {
val pendingIntent = item.actionIntent
pendingIntent.send()
}
}
}
}
}
override fun onNotificationRemoved(sbn: StatusBarNotification?) {
super.onNotificationRemoved(sbn)
}
}
Здесь мы предполагаем, что у уведомления есть действие с меткой answer, тем самым мы сопоставляем и вызываем соответствующее намерение, связанное с ним. В активности запуска спросите разрешение на доступ к уведомлениям
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val intent = Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS")
startActivity(intent)
}
}
Наконец зарегистрируйте сервис для прослушивания уведомлений
<service
android:name=".AutoCallPickerService"
android:label="@string/app_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action
android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
Если модель телефона не показывает уведомление о входящих звонках, этот код будет полным провалом.
person
Manoj Perumarath
schedule
24.07.2019