Android 后台服务打开(跳转)Activity(界面)国内支持

在后台保活一个服务即可后台打开前台Activity,后台服务都可以打开(跳转)activity

首先软件先确保软件具有悬浮窗权限

当然悬浮窗权限可以通过降低最高适配版本,强行获取权限,则无需申请权限

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;

public class MainActivity extends AppCompatActivity {

    private ActivityResultLauncher<String> launcher;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 创建ActivityResultLauncher实例
        launcher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
            if (isGranted) {
                // 已经获取悬浮窗权限,可以进行相关操作
            } else {
                // 未获取悬浮窗权限,可以提示用户或执行其他逻辑
            }
        });

        // 检查悬浮窗权限并请求
        checkAndRequestFloatingWindowPermission();
    }

    // 检查悬浮窗权限并请求
    private void checkAndRequestFloatingWindowPermission() {
        if (Settings.canDrawOverlays(this)) {
            // 已经获取悬浮窗权限,可以进行相关操作
        } else {
            // 未获取悬浮窗权限,请求权限
            launcher.launch(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
        }
    }
}
    // 获取 WindowManager 实例
        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        // 创建悬浮窗口布局参数
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // 悬浮窗口类型,注意需要申请悬浮窗权限
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // 悬浮窗口不获取焦点
                PixelFormat.TRANSLUCENT); // 设置悬浮窗口背景透明
        params.width = 1; // 悬浮窗口的宽度
        params.height = 1; // 悬浮窗口的高度
        View floatView = new View(this);
        windowManager.addView(floatView, params);

在后台服务中创建悬浮窗1x1像素显示以后即可:

1.跳转打开Activity 

Intent intent = new Intent(this, InjectionsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//这个必须要有
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

目前只有小米android13已成功

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪得几日算几日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值