Android AndroidQ 小米 oppo等后台启动界面问题 解决方案

Posted 摘星猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android AndroidQ 小米 oppo等后台启动界面问题 解决方案相关的知识,希望对你有一定的参考价值。

banner传送门      圆形进度条  相机取景框

注: 机型跳转设置适配  可以使用 如下方式 完成 适配(当发现不能正常弹出 权限弹窗,又不能正常调起页面)

比如 oppo 手机  直接在 方法后面加参数 即可 【"huawei", "oppo", "vivo","meizu"】

 

有读者问  怎么判断 已开启 权限   由于 机型不能覆盖 所以 之前并未 放出来:如果很急得 话可以用如下代码:

/**
     * 新增权限检测
     * @param context
     * @return
     */
    public boolean hasBgStartPermission(Context context) 
        if (Miui.isMIUI()) 
            return Miui.isAllowed(context);
         else 
            return PermissionUtil.hasPermission(context);
        
    
 BgStart.getInstance().requestStartPermisstion(this, new PermissionLisenter() 
            @Override
            public void onGranted() 
                Log.e(TAG, "onGranted");
            

            @Override
            public void cancel() 
                Log.e(TAG, "cancel");
            

            @Override
            public void onDenied() 
                Log.e(TAG, "onDenied");
            
        ,"opple");

需求:当android 手机 按了 home 键后  接到语音通话 需要 弹出 语音接听界面。

业务分析:当app 处于 后台状态下(按home键)接到socket 消息或者推送消息   然后 直接从后台 弹出界面。

最终效果:很多 新版(Android Q)、小米等手机 弹出不相关界面。测试和产品 组 要求修复。

经过探索发现 大部分手机 需要开启【悬浮窗权限】  小米等部分手机 需要开启【后台弹出界面】权限  

于是 就手写了一个 demo :希望有需要的同学 可以试试:

集成方式:项目 目录 build.gradle

  repositories 
        google()
        jcenter()
        
    

项目build.gradle

dependencies 
	      implementation 'org.zhx.common:bgStart:1.1.2'
	

非Androidx 项目 在gradle.properties 添加:

android.useAndroidX=true
android.enableJetifier=true

 

代码如下:

第一步:AndroidMenifest 添加

 <activity android:name="org.zhx.common.bgstart.library.BridgeActivity" />

第二步:Application onCreat中 初始化

 @Override
    public void onCreate() 
        super.onCreate();
        BgManager.getInstance().init(this);
    

第三步:使用前 请先申请权限 

    BgStart.getInstance().requestStartPermisstion(this, new PermissionLisenter() 
            @Override
            public void onGranted() 
                Log.e(TAG, "onGranted");
            

            @Override
            public void cancel() 
                Log.e(TAG, "cancel");
            

            @Override
            public void onDenied() 
                Log.e(TAG, "onDenied");
            
        );

第二步:启动界面 从MainActivity  跳转到B  (activity)

  Intent intent = new Intent(MainActivity.this, TargetActivity.class);
                BgStart.getInstance().startActivity(MainActivity.this, intent, TargetActivity.class.getName());

DEMO 下载 持续更新

以上是关于Android AndroidQ 小米 oppo等后台启动界面问题 解决方案的主要内容,如果未能解决你的问题,请参考以下文章

2023年Android黑科技保活方案,应用永生,拒绝强制杀死 最高适配Android 13 小米 华为 Oppo vivo 等最新机型 拒绝强杀 开机自启动 附demo apk 附研究资料

在小米或 Oppo 或 Vivo 手机上 - 应用程序任务未按预期工作

V小米Android Q适配计划公布:怒赞

小米和OPPO等中国ROM的工作管理器,在电池优化时,将预定的工作延迟增加几个小时

oppo和小米手机后台定位服务不工作

备战2022Android中高级面试题答案解析:一线大厂(腾讯字节OPPO网易小米)面经总结