如何在三星设备中以编程方式启用自动启动选项?

Posted

技术标签:

【中文标题】如何在三星设备中以编程方式启用自动启动选项?【英文标题】:How to Enable Autostart option programmatically in Samsung devices? 【发布时间】:2020-01-06 07:01:13 【问题描述】:

我正在使用后台服务,它无法在某些设备上运行,因为我必须为应用程序启用自动启动权限。我想在需要的地方自动启用自动启动权限。我正在使用此代码,但它会将我重定向到自动启动权限所在的窗口。但在三星手机中,它并没有指向那个窗口

  if ("xiaomi".equalsIgnoreCase(manufacturer)) 
                intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
                alertdialogue(intent);
             else if ("oppo".equalsIgnoreCase(manufacturer)) 
                intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
                alertdialogue(intent);
             else if ("vivo".equalsIgnoreCase(manufacturer)) 
                intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
                alertdialogue(intent);
             else if ("Letv".equalsIgnoreCase(manufacturer)) 
                intent.setComponent(new ComponentName("com.letv.android.letvsafe", "com.letv.android.letvsafe.AutobootManageActivity"));
                alertdialogue(intent);
             else if ("Honor".equalsIgnoreCase(manufacturer)) 
                intent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
                alertdialogue(intent);
            

我想要三星设备的解决方案

【问题讨论】:

【参考方案1】:

其他答案是正确的,com.samsung.android.sm 是 N/7.0/24 及更高版本上的包名称,但是我发现在 Q/10.0/29 上,活动名称已从 com.samsung.android.sm.ui.battery.BatteryActivity 更改为 @987654323 @。我不确定是 O 还是 P。最好的办法是简单地列出所有可能的解决方案,然后依次尝试:

fun openSamsungBackgroundSettings() 

    val possibleIntents = mutableListOf<Intent>()
    val battery1 = "com.samsung.android.sm.ui.battery.BatteryActivity"
    val battery2 = "com.samsung.android.sm.battery.ui.BatteryActivity"
    val pkg = if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N)
        "com.samsung.android.lool"
    else
        "com.samsung.android.sm"
    possibleIntents.add(Intent().setComponent(ComponentName(pkg, battery1)))
    possibleIntents.add(Intent().setComponent(ComponentName(pkg, battery2)))
    //general settings as backup
    possibleIntents.add(Intent(Settings.ACTION_SETTINGS))
    possibleIntents.forEach 
        try 
            startActivity(it)
            return
         catch (ex: Exception) 
            w(ex)"Failed to open intent:$it"
        
    

【讨论】:

【参考方案2】:

new Intent().setComponent(new ComponentName("com.samsung.android.lool","com.samsung.android.sm.ui.battery.BatteryActivity"))

试试这个意图,但这是为了进行电池优化控制活动, 没有找到适用于三星的确切 AutoStart,如果您找到请告诉我

【讨论】:

我也没有找到任何解决方案。如果你知道并告诉我 infinix 手机,请告诉我【参考方案3】:

有些三星手机不支持此授权(没有电池优化活动) 但是对于那些有两种情况的人

"com.samsung.android.sm", "com.samsung.android.sm.ui.battery.BatteryActivity" 在 Android L 上

Android N 上的"com.samsung.android.lool", "com.samsung.android.sm.ui.battery.BatteryActivity"

【讨论】:

以上是关于如何在三星设备中以编程方式启用自动启动选项?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中以编程方式在小米手机安全应用程序中为我的应用程序启用自动启动选项

如何在 MI 4i 安全应用程序中以编程方式为我的应用程序启用自动启动选项?

如何在 iOS 中以编程方式启用睡眠模式?

如何以编程方式启用自动启动和浮动窗口权限

如何以编程方式在小米中为我的应用启用自动启动

如何在iOS 7中以编程方式设置设备方向?