zha*_*hen 11 java android kotlin android-developer-api
假设我有 AOSP 源代码,如何在下拉通知面板时在前台暂停 APP?我用谷歌搜索并发现一个应用程序可以监听事件onWindowFocusChange并主动采取一些行动,但是如何在拉下通知面板时暂停任何应用程序,而不分别修改每个应用程序(这是不切实际的)?
有没有办法可以onPause从 SystemUI 进程调用任何前台应用程序的功能?
Aka*_*bey 10
您可以使用以下方法来检测通知面板拉动,
在您的清单文件中
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
Run Code Online (Sandbox Code Playgroud)
在您的活动中覆盖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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的音频焦点应用请求中,请参阅以下链接
https://developer.android.com/guide/topics/media-apps/audio-focus#java
这将暂停所有其他应用的音频访问。
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |