GCM 通知項目を共有したい。共有ボタンはクリック イベントに応答し、アイテムも共有されます。ここでの唯一の問題は、Intent chooser ダイアログが通知トレイの下に表示されることです。ユーザーは手動でステータス バーを閉じてから、共有するアプリを選択する必要があります。ユーザーが共有をクリックすると、アプリを選択するためのダイアログが直接表示されるように、ステータスバーをプログラムで閉じたいと思います。
status bar
service を使用してサービスを開閉できることがわかりました。ただし、システム アプリには制限があります。
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);
このインテントを呼び出すと、通知が自動的に閉じられます