android-activity - 当手机被锁定并且屏幕在 android 10 中关闭时,如何从 ForegroundService 打开活动?
问题描述
从我的问题中可以清楚地看出,我想从前台服务开始活动。在 android 5-9 中它会启动,但在 android 10 中有限制,我不知道该怎么做!
这是需要开始的活动:
public class Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_time);
// Important: have to do the following in order to show without unlocking
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
}
并表现:
<activity android:name=".Activity"
android:showOnLockScreen="true"
android:screenOrientation="portrait"
android:autoRemoveFromRecents="true"
android:excludeFromRecents="true"
/>
解决方案
从 android 10 开始,在大多数情况下,无法从后台服务打开您的活动,因为它们添加了许多限制以向用户提供更好的体验。
以下是限制的例外情况
该应用程序有一个可见窗口,例如前台的活动。该应用程序在前台任务的后台堆栈中有一个活动。该应用程序在“最近”屏幕上现有任务的后台堆栈中有一个活动。
该应用程序最近在一项活动上调用了 finish()。这仅适用于应用程序在调用 finish() 时在前台有一个活动或在前台任务的后台堆栈中有一个活动。
该应用程序具有受系统绑定的服务。此条件仅适用于可能需要启动 UI 的以下服务:AccessibilityService、AutofillService、CallRedirectionService、HostApduService、InCallService、TileService、VoiceInteractionService 和 VrListenerService。
该应用程序具有由不同的可见应用程序绑定的服务。请注意,绑定到服务的应用程序必须保持可见,以便后台应用程序成功启动活动。
应用程序从系统收到通知 PendingIntent。在服务和广播接收器的待处理意图的情况下,应用程序可以在发送待处理意图后的几秒钟内启动活动。
应用程序接收到从不同的可见应用程序发送的 PendingIntent。
应用程序接收系统广播,应用程序将在其中启动 UI。示例包括 ACTION_NEW_OUTGOING_CALL 和 SECRET_CODE_ACTION。该应用程序可以在广播发送后的几秒钟内启动活动。
该应用程序通过 CompanionDeviceManager API 与配套硬件设备相关联。此 API 允许应用程序启动活动以响应用户在配对设备上执行的操作。
该应用程序是在设备所有者模式下运行的设备策略控制器。示例用例包括完全托管的企业设备,以及数字标牌和信息亭等专用设备。
该应用已被用户授予 SYSTEM_ALERT_WINDOW 权限。
这是相同 的限制例外的参考链接
推荐阅读
- python - Telnet 错误地发送了 unicode 字符
- php - Kubernetes 内的 Nginx fpm Laravel 容器未获取环境变量
- batch-file - cURL 请求挂起
- python-3.x - 交换列值然后将它们附加到熊猫数据框中的更好方法?
- azure - 在没有网站的情况下,在 IIS 中将一个域安全地重定向到另一个域的最佳方法
- loops - 复合字面量
- reactjs - 无法访问环境变量 React
- docker - docker 桌面上的设备上没有剩余空间用于 macos 和 skaffold
- sql - 显示国家名称中至少包含 2 个单词的所有国家
- html - 如何将不同大小的图像放入相同大小的 CSS 网格中,同时保持图像的纵横比?