华为在手机锁定时关闭后台应用程序

2024-01-10

这是我第一次在这个论坛上提问:p 我制作了一个Android应用程序,它必须在后台运行,即当手机处于待机状态时才能恢复用户的位置。我使用服务和唤醒锁。 该应用程序适用于SAMSUNG但我注意到HUAWEI如果应用程序不在受保护的应用程序列表中,则终止该应用程序。 因此,我创建一个对话框来告诉用户激活受保护应用程序列表中的应用程序,如下所示:在手机锁定时保持定期服务处于活动状态 https://stackoverflow.com/questions/47962656/keeping-a-periodic-service-active-while-the-phone-is-locked因为我的应用程序应该在所有 Android 手机上运行我想知道是否有其他手机品牌会在手机空闲时杀死该应用程序请做同样的事情。 先感谢您 :)


我面临着同样的问题,并使用可访问性我尝试获取类名称或活动名称以传递意图并打开设置,看起来像旧受保护的应用程序列表不再可用,一种新方法是:

禁用应用程序Launch在华为

在奥利奥华为p10上测试:

对于手动,您可以执行以下步骤:

设置 -> 电池 -> 启动

并找到您的应用程序并禁用

以编程方式:

public class Constant {


    public static List<Intent> POWERMANAGER_INTENTS = Arrays.asList(
            new Intent().setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity")),
            new Intent().setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")),
            new Intent().setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity")),
            new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")),
            new Intent().setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.startupapp.StartupAppListActivity")),
            new Intent().setComponent(new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity")),
            new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity")),
            new Intent().setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.BgStartUpManager")),
            new Intent().setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")),
            new Intent().setComponent(new ComponentName("com.asus.mobilemanager", "com.asus.mobilemanager.entry.FunctionActivity")).setData(android.net.Uri.parse("mobilemanager://function/entry/AutoStart"))
    );
}

将以下代码放入您的 Util 或 Activity 类中

 private static boolean isCallable(Context context, Intent intent) {
      List<ResolveInfo>list=context.getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        return list.size() > 0;
    }

saveUserSessionManager 是一个 Preference,您可以设置您的首选项类而不是 SaveUserSessionManager

public static void startPowerSaverIntent(Context context, SaveUserSessionManager saveUserSessionManager) {
    boolean skipMessage = saveUserSessionManager.getDataByKey("skipProtectedAppCheck", false);

    if (!skipMessage) {
        boolean foundCorrectIntent = false;
        for (Intent intent : Constant.POWERMANAGER_INTENTS) {
            if (isCallable(context, intent)) {
                foundCorrectIntent = true;


                new AlertDialog.Builder(context)
                        .setTitle(Build.MANUFACTURER + " Protected Apps")
                        .setMessage(String.format("%s requires to be 'White list' to function properly.\nDisable %s from list.%n", context.getString(R.string.app_name), context.getString(R.string.app_name)))
                        .setPositiveButton("Go to settings", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                context.startActivity(intent);
                                saveUserSessionManager.storeDataByKey("skipProtectedAppCheck", true);
                                dialog.dismiss();
                            }
                        })
                        .show();
                break;
            }
        }
    }
}

如何致电?在 onResume 方法的 MainActivity 中检查其是否启用。

 @Override
protected void onResume() {
    super.onResume();

    //saveUserSessionManager is just a Preference you can set your preference class instead of SessionManager

    if (!saveUserSessionManager.getDataByKey("skipProtectedAppCheck", false)) {

        Utils.startPowerSaverIntent(mContext, saveUserSessionManager);
    }
}

就这样 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为在手机锁定时关闭后台应用程序 的相关文章

随机推荐

  • 确定 Java 中的 lambda 表达式是无状态还是有状态

    是否有一个函数接受 lambda 表达式的引用并返回一个布尔值 说明 lambda 表达式是否是无状态的 如何确定 lambda 表达式的状态性 好吧 lambda 表达式只是一个只有一个方法的特殊匿名类的实例 匿名类可以 capture
  • Firefox 中的字段集内容溢出

    我遇到了有关 fieldset 的 css 问题 想知道您是否可以提供帮助 我有一个宽度小于其内容 div 宽度的字段集 我希望字段集显示水平滚动条 因为内容太宽 但它仅适用于 IE 不适用于 Firefox 提前致谢 Eric 这是htm
  • 将 Requirejs 和基于 Backbone 的应用程序迁移到 WebPack

    我有一个使用 Backbone js 和 Marionette 与 Requirejs 开发的大型应用程序 我们使用 Grunt 进行构建 我需要将 Requirejs 迁移到 Webpack 因为我们经常看到模块加载超时 我觉得 Webp
  • 类似于 LINQ to Entities 中的运算符或使用通配符

    我正在使用 LINQ 2 实体 以下是问题所在 string str test doc Contains str converts this into LIKE test doc 预期转化 LIKE test doc 如果是 LINQ 2
  • Cordova 项目中检测到 Android Studio 项目

    我在命令行中创建了一个cordova项目 我添加了android平台 当运行 科尔多瓦准备安卓 or 科尔多瓦构建安卓 我收到以下消息 检测到 Android Studio 项目 并且构建尚未开始 请问问题是什么 请帮助 科尔多瓦版本 8
  • TypeDescriptor.GetConverter() 不返回我的转换器

    我有一个简单的类型 带有在运行时编译和加载的自定义类型转换器 但 TypeDescriptor GetConverter 找不到正确的转换器 这是一个独立的例子 using System using System ComponentMode
  • 如何使用Python 3.4和SIP 4.19.1安装PyQt5?

    我需要使用安装在 XP 机器上的 Python3 4 现在我正在尝试使用Python34在Win10中安装PyQt5 然而 当我跑步时 pip3 install PyQt5 I get 找不到任何满足 SIP gt 4 19 1 要求的下载
  • 为什么 std::wofstream 不将所有 wstring 打印到文件中?

    我有一个std wstring其大小为 139 580 199 个字符 为了调试 我使用以下代码将其打印到文件中 std wofstream f L C some file txt f lt lt buffer f close 之后注意到字
  • 当声明对 Int 数组的引用时,为什么它必须是对 const 指针的引用?

    注意 我正在使用 g 编译器 我听说它非常好并且应该非常接近标准 假设您声明了一个整数数组 int a 3 4 5 6 现在假设您确实想声明对该数组的引用 不管为什么 除了 Bjarne 说该语言支持它 案例 1 如果你尝试 int ra
  • 如何学习Linux无线驱动(mac80211)的结构?

    Linux无线驱动mac80211中有这么多的结构 像struct net device struct ieee80211 hw struct ieee80211 vif and struct ieee80211 local等等 如此多的结
  • ruby on Rails 是否有像 ASP.NET MVC 一样的客户端验证 [重复]

    这个问题在这里已经有答案了 在 ASP NET MVC 中 您可以使用数据注释模型设置客户端验证 这类似于 ruby on Rails 中的验证 然而 创建了一些不显眼的 JavaScript 钩子 可以自动连接表单上的客户端验证 Ruby
  • 如何使用 window.caches 保存窗口对象中的页面?

    大多数保存 app shell 的示例都显示了服务工作线程的过程 但是我注意到您还可以从窗口访问缓存对象 所以我的问题是 我可以从页面本身保存页面以供离线使用吗 如果可以 如果可能的话 服务人员的意义何在 这里存在一个先有鸡还是先有蛋的问题
  • 使用 git 进行 VS2010 项目:无法添加文件 *.opensdf

    我正在使用 git 跟踪 VS2010 中的 C 项目 我正在使用 stackoverflow 上找到的忽略模式 它通常不排除 opensdf 文件 不幸的是 当尝试提交文件时 我收到以下错误 error open foo opensdf
  • 赶上现代编程技术的一种方法

    我已经从事非专业编程大约 23 年了 发现我有点陷入困境 我找到了一个我喜欢的工具 并且年复一年地保持这种状态 不幸的是 这意味着我的编程落后于时代 我本身并不直接计划进行专业编程 但是 能够开发客户端 最近希望迁移到云 应用程序以供我的客
  • 如何从子域中删除主域 cookie

    是否可以从子域中删除主域 cookie 我正在使用单点登录 注销时我想删除主域 cookie 据我所知 你不能这样做 但是您不能将注销调用指向主域吗 想必您已经在登录调用中执行此操作 以便首先获取主域 cookie
  • 带有表行的 Javascript Onclick

    我的 JScript 代码有问题 我试图循环遍历表中的所有行并添加一个onclick事件 我可以得到onclick要添加的事件 但有几个问题 第一个问题是所有行最终都设置了错误的参数onclick event 第二个问题是它只能在 IE 中
  • 点与流程图上的 x 轴不对齐

    我有浮点数据 其中 x 轴上的点与线条不对齐 specifically take a look at this photo 这是我正在使用的原始数据 0 1327305600000 1989 1 1327392000000 3222 333
  • 我的文本框以编程方式添加在页面重新加载后丢失值后面的代码中。有什么办法可以解决这个问题吗?

    就像这个主题一样 我在通过按钮上的事件创建文本框时遇到问题 然后在重新加载后丢失了文本框中的值 我的代码 protected void Page Load object sender EventArgs e if IsPostBack Se
  • Android 片段:空构造函数真的需要吗?

    我有一个带有寻呼机和 FragmentStatePagerAdapter 的活动 我需要跨多个页面滑动 众所周知 这个适配器一次创建 3 个片段实例 一个是要显示的 一个是上一个 一个是下一个 我的活动使用只有一个构造函数的片段运行得非常好
  • 华为在手机锁定时关闭后台应用程序

    这是我第一次在这个论坛上提问 p 我制作了一个Android应用程序 它必须在后台运行 即当手机处于待机状态时才能恢复用户的位置 我使用服务和唤醒锁 该应用程序适用于SAMSUNG但我注意到HUAWEI如果应用程序不在受保护的应用程序列表中