6

GCM 通知項目を共有したい。共有ボタンはクリック イベントに応答し、アイテムも共有されます。ここでの唯一の問題は、Intent chooser ダイアログが通知トレイの下に表示されることです。ユーザーは手動でステータス バーを閉じてから、共有するアプリを選択する必要があります。ユーザーが共有をクリックすると、アプリを選択するためのダイアログが直接表示されるように、ステータスバーをプログラムで閉じたいと思います。

status barservice を使用してサービスを開閉できることがわかりました。ただし、システム アプリには制限があります。

private void closeNotificationTray() {
        Object service = mContext.getSystemService(Context.STATUS_BAR_SERVICE);
        Method collapse;
        try {
            Class<?> statusBarMngr = Class.forName("android.app.StatusBarManager");
            if (Build.VERSION.SDK_INT >= 17)
                collapse = statusBarMngr.getMethod("collapsePanels");
            else
                collapse = statusBarMngr.getMethod("collapse");
            collapse.invoke(service);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

上記のコードを使用しました。しかし、「STATUS_BAR_SERVICE を解決できません」というエラーが表示されます。そして、マニフェストに以下の許可を追加したとき:

<uses-permission
        android:name="android.permission.STATUS_BAR" />

システムアプリのみ許可されています。アプリでの使用は許可されていません。status barサービスまたは他の代替手段を使用する方法はありますか?

アップデート:

わずか 2 行のコードで上記の問題を解決しました。STATUS_BAR_SERVICE を呼び出す必要はありません。

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    mContext.sendBroadcast(it);

このインテントを呼び出すと、通知が自動的に閉じられます

4

1 に答える 1

0

はい、このパーミッション「android.permission.STATUS_BAR」はシステム アプリのみで利用でき、サードパーティ アプリでは利用できません。

以下の方法を試すことができます:

  1. 保留中のインテントを渡して、いくつかの通知を作成します。
  2. アクションとして共有する保留中の意図を作成します。これで、共有オプションを使用できるようになります。

@Amanda Fernandez上記の方法を試すことができますか

于 2015-06-24T06:47:17.820 に答える