0

2.3.3 以降の OS バージョンをサポートする通知システムを持つアプリケーションに取り組んでいます。Android OS 3 未満では、コンテンツ インテントを設定するオプションがあります。通知領域全体がシングルクリック可能です。

ただし、OS 3.0 以降では、リモートビューを使用して、それぞれのアクションを実行するための 3 つの異なるボタンがあります。通知ドロワーを開くと、任意のボタンをクリックしてアクションを実行できます。

デフォルトでボタンをクリックした後、通知ドロワーは上がらない(または非表示)。プログラムで通知ドロワーを非表示にする方法はありますか。これについて私を助けてください。

4

2 に答える 2

0

次のスニペットでその問題を修正しました。しかし、これを使用することはお勧めできません。これは、リフレクションの助けを借りて達成できます。将来、これは廃止される可能性があります。

void collapseStatusBar(Context context) { // システム ステータス バーへのアクセスを取得します。これは公開されていないため、 // 将来廃止される可能性があります Object service = context.getSystemService("statusbar");

Class<?> statusbarManager = null;

try {
    statusbarManager = Class.forName("android.app.StatusBarManager");
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.getMessage();
}

// Till 4.1 (JB), StatusBarManager collapse method did the job but from
// 4.2 it's been
// changed to collpasePanels, so perform the job accordingly
if (Build.VERSION.SDK_INT <= 16) {
    Method collapseMethod = null;

    try {
        collapseMethod = statusbarManager.getMethod("collapse");
    } catch (NoSuchMethodException e) {
        e.getMessage();
    }

    collapseMethod.setAccessible(true);

    try {
        collapseMethod.invoke(service);
    } catch (IllegalArgumentException e) {
        e.getMessage();
    } catch (IllegalAccessException e) {
        e.getMessage();
    } catch (InvocationTargetException e) {
        e.getMessage();
    }
} else {
    Method collapsePanelsMethod = null;

    try {
        collapsePanelsMethod = statusbarManager
                .getMethod("collapsePanels");
    } catch (NoSuchMethodException e1) {
        e1.getMessage();
    }

    collapsePanelsMethod.setAccessible(true);

    try {
        collapsePanelsMethod.invoke(service);
    } catch (IllegalArgumentException e) {
        e.getMessage();
    } catch (IllegalAccessException e) {
        e.getMessage();
    } catch (InvocationTargetException e) {
        e.getMessage();
    }
}

}

于 2014-02-14T07:45:53.267 に答える
0

次のようなものを使用していますか

NotificationManager mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNM.cancelAll();
于 2014-02-10T23:10:18.933 に答える