早上好,
我们已经开发了一个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方法中设置了一个标志,并在重新创建Notification Manager之前检查该标志是否有值。
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开发非常陌生。我认为这个解决方案非常简单,每个人都知道,这就是为什么网上任何地方都没有答案的原因。但是,对这个简单问题的任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
通过修改AndroidManifest,为每个活动添加以下标记来解决此问题:android:configChanges =“orientation”