Android10不能彻底杀死第三方播放器应用,Android7.1可以杀死,在Android10上有没有什么办法
5条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在Android 10中,Google引入了更严格的隐私和后台运行限制,这使得完全"杀死"一个应用变得更加困难,特别是对于第三方应用。然而,用户仍然可以通过一些方法来降低应用的活跃程度,使其看起来像是被"杀死"了。
这里有一种可能的方法,通过设置应用的权限来限制其运行:
- 关闭自动启动:阻止应用在设备启动时自动运行。
- 关闭后台运行:限制应用在后台运行。
- 禁用通知:防止应用显示通知,这可能会让它看起来像是被关闭了。
下面是如何实现这些步骤的详细指南:
步骤1:关闭自动启动
在某些设备上,你可以在手机设置中找到“应用管理”或类似的选项。在那里,选择你要关闭自动启动的应用,然后关闭“允许应用程序在启动时启动”。
如果你想要编写代码来控制这个功能,可以尝试使用以下方法(注意,这可能不适用于所有设备):
private void disableAutoStart(Context context, String packageName) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (powerManager.isIgnoringBatteryOptimizations(packageName)) { Intent intent = new Intent(); String packageNameToCheck = context.getPackageName(); ComponentName componentName = new ComponentName(packageNameToCheck, ".MainActivity"); intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); context.startActivity(intent); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); if (!pm.isInteractive()) return; // Disable the autostart for the package. PackageInfo pi = null; try { pi = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_PERMISSIONS); } catch (PackageManager.NameNotFoundException e) { Log.e("disableAutoStart", "Error getting package info", e); return; } ComponentName component = new ComponentName(packageName, pi.activities[0].name); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.cancel(new PendingIntent( AlarmManager.RTC_WAKEUP, pi.applicationInfo.uid, 0, Uri.parse("package:" + packageName), component )); } }
步骤2:关闭后台运行
从Android 8.0开始,系统默认允许应用在后台运行。但是,你可以通过调整电池优化设置来限制它们。在手机设置中,找到“应用管理”,选择你要限制的应用,然后选择“存储”,在“后台数据”部分关闭它。
如果你需要编程实现,可以尝试以下代码:
private void disableBackgroundRunning(Context context, String packageName) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); activityManager.setAppOpsMode(AppOpsManager.MODE管理系统); AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR不允许后台服务, android.os.Process.myUid(), packageName); if (mode != AppOpsManager.MODE允许) { appOps.setMode(AppOpsManager.OP不允许后台服务, android.os.Process.myUid(), packageName, AppOpsManager.MODE管理系统); } } }
步骤3:禁用通知
在手机设置中,找到“应用管理”,选择你要禁止通知的应用,然后关闭“显示通知”。此外,你还可以通过代码来实现:
private void disableNotifications(Context context, String packageName) { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); notificationManager.setInterruptionFilter(NotificationManagerCompat.INTERRUPTION_FILTER_NONE); }
请注意,这些操作可能会对应用的功能产生影响,因此在执行之前请确保你了解这些限制可能带来的后果。另外,不同的设备和厂商可能有不同的实现方式,上述代码可能需要根据实际情况进行调整。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 爬虫爬取网站的一些信息
- ¥15 关于vue2中methods使用call修改this指向的问题
- ¥15 idea自动补全键位冲突
- ¥15 请教一下写代码,代码好难
- ¥15 iis10中如何阻止别人网站重定向到我的网站
- ¥15 滑块验证码移动速度不一致问题
- ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
- ¥15 麒麟V10桌面版SP1如何配置bonding
- ¥15 Marscode IDE 如何预览新建的 HTML 文件
- ¥15 K8S部署二进制集群过程中calico一直报错