从Android 12开始,对于使用通知跳板启动活动的应用程序,由于隐私和安全原因,Google引入了新的限制。如果应用程序在后台运行,并且没有相应的权限,则无法使用通知跳板启动活动。这意味着用户无法通过通知启动应用程序的活动。
如果您的应用程序需要使用通知跳板启动活动,则需要做出以下更改:
您可以通过在清单文件中添加以下权限来获得启动活动的权限:
此权限允许您在服务启动之前从通知启动活动。请注意,在Android 12中,此权限将成为敏感权限。
如果您的应用程序在后台运行,则无法使用通知跳板启动活动。您可以使用以下代码检查应用程序是否在后台:
ActivityManager.RunningAppProcessInfo appProcessInfo = new ActivityManager.RunningAppProcessInfo(); ActivityManager.getMyMemoryState(appProcessInfo); boolean isInBackground = appProcessInfo.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
在Android 12中,如果您的应用程序需要在后台接收通知,并且需要在通知被点击时启动活动,则建议使用NotificationListenerService。使用此服务,您可以从通知中提取信息,并在用户单击通知时启动活动。
示例代码:
public class MyNotificationListenerService extends NotificationListenerService {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
// Extract information from notification
// Start activity when user clicks notification
}
}