Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 请求删除应用程序(Android)的后台限制_Java_Android - Fatal编程技术网

Java 请求删除应用程序(Android)的后台限制

Java 请求删除应用程序(Android)的后台限制,java,android,Java,Android,如果我的应用程序受到后台限制,如何请求用户删除限制?是否可以将用户直接导航到设置,用户只需单击即可禁用限制 ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); if(activityManager.isBackgroundRestricted()) { // ?? } 您还可以使用将用户发送到常规应用程序设置 val intent = Inte

如果我的应用程序受到后台限制,如何请求用户删除限制?是否可以将用户直接导航到设置,用户只需单击即可禁用限制

ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
if(activityManager.isBackgroundRestricted()) {
    // ??
}   

您还可以使用将用户发送到常规应用程序设置

val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", packageName, null))
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        startActivity(intent)
此外,背景限制与电池优化相结合。所以,若你们要求用户忽略电池优化,那个么他以后就很难设置限制了

private fun checkBatteryOptimization() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val packageName = packageName
        val pm = getSystemService(POWER_SERVICE) as PowerManager
        if (!pm.isIgnoringBatteryOptimizations(packageName)) {
            showBatteryOptimizationDialog()
        }
    }
}

@SuppressLint("BatteryLife")
@RequiresApi(api = Build.VERSION_CODES.M)
private fun requestIgnoreBatteryOptimization() {
    val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
    intent.data = Uri.parse("package:$packageName")
    startActivityForResult(intent, REQUEST_BATTERY_PERMISSION)
}

您还可以使用将用户发送到常规应用程序设置

val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", packageName, null))
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        startActivity(intent)
此外,背景限制与电池优化相结合。所以,若你们要求用户忽略电池优化,那个么他以后就很难设置限制了

private fun checkBatteryOptimization() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val packageName = packageName
        val pm = getSystemService(POWER_SERVICE) as PowerManager
        if (!pm.isIgnoringBatteryOptimizations(packageName)) {
            showBatteryOptimizationDialog()
        }
    }
}

@SuppressLint("BatteryLife")
@RequiresApi(api = Build.VERSION_CODES.M)
private fun requestIgnoreBatteryOptimization() {
    val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
    intent.data = Uri.parse("package:$packageName")
    startActivityForResult(intent, REQUEST_BATTERY_PERMISSION)
}

我也在努力寻找一个“干净”的解决方案,但我最好的想法是显示一个alertdialog,让用户通过重定向到应用程序设置来禁用限制:

 startActivity(
     Intent(
       Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
       Uri.parse("package:${applicationContext.packageName}")
     )
 )

每个安卓制造商的操作系统都有略微不同的设置,因此几乎不可能为每个人找到一个通用的解决方案

我也在努力寻找一个“干净”的解决方案,但我最好的想法是显示一个alertdialog,让用户通过重定向到应用程序设置来禁用限制:

 startActivity(
     Intent(
       Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
       Uri.parse("package:${applicationContext.packageName}")
     )
 )

每个安卓操作系统制造商的设置都略有不同,因此,几乎不可能为每个人找到一个共同的解决方案

我知道你可以直接进入设置,但不确定你是否可以直接进入应用程序的权限列表我知道你可以直接进入设置,但不确定你是否可以直接进入应用程序的权限列表