早上好,
我们开发了一个 android 应用程序,我负责找出如何在每次屏幕方向改变时消除通知声音的不良行为。显然,这种行为只存在于运行 OS 版本 3.2.3 或更高版本的设备上。
我已经阅读了几篇文章,表明可以通过取消选中“设置”->“开发人员选项”中的 USB 调试来关闭此功能,但是未选中此选项,并且我们的任何 Android 设备上的其他应用程序都不会发出此通知声音在方向改变时。
该应用程序确实需要在“收到消息”时发出通知(该应用程序连接到 Web 服务并每隔一段时间从该服务获取新消息)。因此,这将排除任何禁用通知的解决方案。
到目前为止,我已经尝试了几种可能的解决方案: 1)收到消息时,实例化一个新的NotificationManager,并在通知响起后,销毁NotificationManager。
if(MessageReceived == true) {
String ns = Context.NOTIFICATION_SERVICE;
messageNotifyManager = (NotificationManager) getSystemService(ns);
}
showNotification();
messageNotifyManager = null;
2)我意识到方向变化本质上是视图被破坏和重新创建。我在初始 onCreate 方法中设置了一个标志,并在重新创建通知管理器之前检查了该标志是否具有值。
public static int Flag = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Flag == 0) {
String ns = Context.NOTIFICATION_SERVICE;
messageNotifyManager = (NotificationManager) getSystemService(ns);
Flag = 1;
}
}
3) 在应用程序的主类中,我创建了一个公共 OrientationEventListener 属性,然后在 onCreate 方法中设置它的值,立即禁用它。当那没有禁用声音时,我尝试禁用引用应用程序主类的每个类中的属性。
public OrientationEventListender listener;
@Override
public void onCreate() {
super.onCreate();
appContext = getApplicationContext();
GetPreferences();
//...
listener = new OrientationEventListener(appContext){
public void onOrientationChanged(int Orientation){
}
};
listener.disable();
}
现在,您可能会说,我对 Android 开发非常陌生。我认为这个解决方案非常简单,每个人都知道,这就是为什么在网络上任何方便的地方都没有答案。但是对于这个简单问题的任何帮助将不胜感激。谢谢!