【问题标题】:Autostart permission programmatically以编程方式自动启动权限
【发布时间】:2019-06-13 22:31:02
【问题描述】:

我正在开发一个应用程序,我需要向用户询问自动启动权限,为此我正在打开自动启动权限设置页面,以便用户使用以下代码为少数制造商打开我们应用程序的权限:

Intent autostartIntent = new Intent();
    if ("xiaomi".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
       startActivity(autostartIntent);
    } else if ("oppo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity"));
       startActivity(autostartIntent);
    } else if ("vivo".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity"));
       startActivity(autostartIntent);
    } else if ("huawei".equalsIgnoreCase(android.os.Build.MANUFACTURER)) {
       autostartIntent.setComponent(new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.optimize.process.ProtectActivity"));
       startActivity(autostartIntent);
}

此外,当我尝试将用户重定向到以下设备时,我面临以下困难:

  1. 在制造商为 Oppo 的 RealMe 2 Pro 上,系统无法启动 AutoStart Permissions Activity。

  2. 在 Moto 和 Nokia 设备上,我无法获取 AutoStart Activity 的路径,因此我可以将用户直接重定向到该页面。

【问题讨论】:

  • 只是要求澄清一下:您是否使用此代码示例在华为上进行了测试?我以前知道制造商名称是“荣誉”

标签: android autostart moto oppo


【解决方案1】:

找到了这个问题的解决方案,我打开电池优化页面让用户关闭我的应用的电池优化。

这是我正在使用的代码:

AlertDialog.Builder builder = new AlertDialog.Builder(PermissionsActivity.this);
    builder.setTitle("Turn off Battery Optimization");
    builder.setMessage("Find XYZ in the list of applications and choose ‘Don’t optimize’.");
    builder.setPositiveButton("Allow",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (Build.VERSION.SDK_INT >= 23) {
                        Intent intent = new Intent();
                        intent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
                        startActivity(intent);
                    }
                }
            });

    builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
        }
    });
    builder.show();

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 2018-07-25
    • 2016-12-24
    • 2018-07-29
    • 2022-01-21
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多