返回

Android后台启动Activity正确姿势

Android

从上篇的博文中大家可以知道,在Android原生机型上可以正常地从后台直接启动一个Activity界面,但是很多用户反馈在部分机型上却不行,主要还是由于厂商对系统做了修改,导致原来的启动方式不再起作用。

按照本文指导,你将能够解决各主流机型从后台启动Activity的限制,从而使得所有用户都能使用Android原生的启动方式,并且达到统一的体验。

解决方案

1. Android 9

1.1 华为

在Android 9版本中,如果项目中没有任何权限请求,那么App是无法直接从后台启动的。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

1.2 小米

在Android 9版本中,小米系统默认是没有启动白名单的,因此我们可以在App中添加一些代码来进行设置。

在Application的onCreate()方法中添加以下代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (notificationManager != null && !notificationManager.isNotificationPolicyAccessGranted()) {
        Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
        startActivity(intent);
    }
}

1.3 OPPO

在Android 9版本中,OPPO系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

1.4 Vivo

在Android 9版本中,Vivo系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

2. Android 10

2.1 华为

在Android 10版本中,华为系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

2.2 小米

在Android 10版本中,小米系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

2.3 OPPO

在Android 10版本中,OPPO系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

2.4 Vivo

在Android 10版本中,Vivo系统对后台启动做了限制,如果App想要从后台直接启动,那么需要先打开设置,然后允许App在后台运行。

我们可以配置Manifest文件,加上请求权限的代码,此时App就可以从后台直接启动。

总结

通过以上方法,我们就可以解决各主流机型从后台启动Activity的限制,从而使得所有用户都能使用Android原生的启动方式,并且达到统一的体验。