gpt4 book ai didi

android - PhoneStateListener 有时在 Nougat 中没有响应

转载 作者:行者123 更新时间:2023-11-30 00:51:22 25 4
gpt4 key购买 nike

我正在我的服务的 onStartCommand 中注册我的 PhoneStateListener。它在以下 android N 设备中运行良好。但有时它在 android N 设备中没有响应。它与打瞌睡模式有关吗?如果是如何解决?

    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
CustomPhoneStateListener phoneStateListener = new CustomPhoneStateListener();
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

最佳答案

我在尝试在服务中运行 PhoneStateListener 时也遇到了这个问题,它似乎只会在 N 台设备上“掉线”。

我尝试了很多不同的建议,但我在运行 7.0 的 nexus5x 上总是失去听众。我能够使它在 100% 的时间内保持 Activity 状态的方法是让服务运行前台通知。只要服务处于 Activity 状态,它基本上就会在通知托盘中保持 Activity 状态。这使我的服务在不同的电话状态下保持 Activity 状态,在这些状态下它会放弃听众,例如当拨出电话被接听时。只要您不为通知生成器设置声音或振动,它就几乎不会引人注意。我的 onCreate 服务如下所示:

MyPhoneListener phoneStateListener = new MyPhoneListener(getApplicationContext());
TelephonyManager telephonymanager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
telephonymanager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);


Intent notificationIntent = new Intent(this, YourActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
notificationIntent, 0);

Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_favorites) //status bar icon
.setContentTitle("Title") //whatever title
.setContentText("Stuff") //main notification text
.setContentIntent(pendingIntent).build();

startForeground(12345, notification);

然后您在服务的 onDestroy 中删除通知:

@Override
public void onDestroy() {
Log.i("log", "service ending");
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);

mNotifyMgr.cancel(12345);


}

希望这对您有所帮助!

关于android - PhoneStateListener 有时在 Nougat 中没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40971053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com