我的应用程序有一个通知,它有一个操作按钮。
单击按钮时,我希望通知面板(或抽屉,您命名它)折叠。我已经找到了一堆解决方案,所有的建议都是一样的(例如其中一个)。
这个解决方案已经不起作用了,至少对我来说不起作用了(在一加8t Android 12设备上)。当调用该命令时,应用程序崩溃。
折叠通知面板的更新方法是什么?
我在思考这个问题几个月后想到了一个主意。你所需要的只是一个没有显示任何内容的空活动。我觉得这有点俗气,但我没有更好的主意。
首先,创建一个不显示任何内容的虚拟空活动,并将您想要执行的代码放入该虚拟活动。
DummyActivity.class
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Do your work here, put the work you would like to do after pressing the button, such as send a broadcast, so your work will still be executed
//No setContentView() is being called, so nothing will be displayed after opening this activity.
finish();
}
记得在AndroidManifest.xml中为虚拟活动添加android:excludeFromRecents="true"
,以便虚拟活动不会显示在最近的应用程序中。
其次,使用PendingIntent.getActivity()
代替,不要使用PendingIntent.getBroadcast()
,所以你应该有这样的东西:
RemoteViews remoteviews = new RemoteViews(context.getPackageName(), R.layout.notification_layout);
Intent notificationIntent = new Intent(context, DummyActivity.class);
PendingIntent pendingIntent;
pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
remoteviews.setOnClickPendingIntent(R.id.MyButton, pendingIntent);
通过这种实现,点击按钮后,透明活动将启动,什么也不显示,但导致通知面板崩溃。