假设我有AOSP源代码,下拉通知面板时如何在前台暂停APP? google了一下发现有APP可以监听事件onWindowFocusChange
并主动采取一些行动,但我该如何暂停任何 APP下拉通知面板时,不分别修改每个APP(不切实际)?
有没有办法可以调用onPause
SystemUI进程中任何前台应用程序的功能?
最佳答案
您可以使用以下方法来检测通知面板拉动,
在您的 list 文件中
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
在您的 Activity 中覆盖
onWindowFocusChanged()
并编写以下代码。这使用权限
@Override
public void onWindowFocusChanged(boolean hasFocus)
{
try
{
if(!hasFocus)
{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
}
}
catch(Exception ex)
{
if(!hasFocus)
{
try {
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ex.printStackTrace();
}
}
}
然后在您的应用程序请求音频焦点中,请参阅以下链接
https://developer.android.com/guide/topics/media-apps/audio-focus#java
这将暂停所有其他应用程序的音频访问。
关于java - 下拉通知面板时是否可以暂停Android中的任何视频(媒体播放器)应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524839/