0

おはようございます、

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 開発に非常に慣れていません。この解決策は非常に単純で誰もが知っているものだと思います。そのため、Web のどこにも答えがありません。しかし、この単純な問題の助けをいただければ幸いです。ありがとう!

4

1 に答える 1

1

この問題は、AndroidManifest を変更し、各アクティビティに次のタグを追加することで解決されました: android:configChanges="orientation"

于 2012-05-31T21:58:46.793 に答える