安卓11 内置apk增加白名单保活

时间: 2023-08-05 22:14:55 浏览: 69
在Android 11中,应用程序的后台限制更加严格,以减少电池消耗和提高性能。为了在应用程序退出后保持应用程序活动状态,您可以通过将应用程序添加到系统的“白名单”中来实现。这样可以确保应用程序在后台运行时不会被系统杀死。 要将应用程序添加到白名单中,请按照以下步骤操作: 1. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> ``` 2. 创建一个Intent,以启动Battery Optimization设置页面: ``` Intent intent = new Intent(); intent.setAction(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + getPackageName())); startActivity(intent); ``` 3. 用户将被重定向到电池优化设置页面。用户需要手动将应用程序添加到白名单中。 请注意,这种方法并不是一种可靠的方式来保持应用程序的活动状态。在大多数情况下,更好的方法是使用Android的JobScheduler API或Firebase Cloud Messaging推送通知来唤醒应用程序并保持活动状态。
相关问题

android11 安装apk接口

Android 11引入了一些新的安全限制,影响了应用程序安装apk的接口。在Android 11及更高版本中,应用程序只能使用特定的安装接口来安装apk文件,以提高应用程序的安全性。 新的安装接口是PackageInstaller类的install方法。要安装apk文件,应用程序需要以下步骤: 1. 获取PackageInstaller的实例。可以使用PackageManager的getPackageInstaller方法来获得。 2. 创建一个新的会话(Session)。会话将用于安装apk文件。 3. 为这个会话创建一个安装包信息(PackageInstallParams)对象。可以设置apk文件的路径、标记等信息。 4. 调用PackageInstaller的createSession方法,传入PackageInstallParams对象,以创建一个新的安装会话。 5. 打开会话,可以使用openWrite方法来获取一个OutputStream对象,将apk文件写入该流中。 6. 当apk文件写入完毕后,关闭输出流。然后调用commit方法提交会话。 7. 应用程序可以监听会话的状态变化,以获得安装的进度和结果。 除了使用新的接口,Android 11还引入了一些权限限制。应用程序需要请求特定的权限来安装apk文件,如WRITE_EXTERNAL_STORAGE权限。此外,应用程序还需要声明REQUEST_INSTALL_PACKAGES权限,以使用PackageInstaller接口。 需要注意的是,通过使用PackageInstaller接口进行安装的apk文件将被视为"分离的"安装,它们的应用数据会被隔离,不会与安装此apk的应用程序共享。这意味着,通过PackageInstaller安装的应用无法直接在应用列表中找到,只能通过系统的设置->应用->特定应用来卸载。 总而言之,Android 11引入了一些安全限制,改变了应用程序安装apk的接口。应用程序需要使用新的PackageInstaller接口,并获取特定的权限才能安装apk文件。

android11中apk静默升级

在 Android 11 中,可以使用 PackageInstaller API 来实现应用程序的静默升级。以下是实现静默升级的步骤: 1. 获取应用程序的 APK 文件。 2. 创建 PackageInstaller.SessionParams 对象。 3. 调用 PackageInstaller.createSession() 方法创建一个会话。 4. 通过会话 ID 打开输出流,并将 APK 文件写入输出流中。 5. 启动会话,等待应用程序安装完成。 以下是一个简单的示例代码: ```java private void installPackageSilently(String apkPath) { // 获取应用程序的 APK 文件 File apkFile = new File(apkPath); // 创建 PackageInstaller.SessionParams 对象 PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); // 调用 PackageInstaller.createSession() 方法创建一个会话 PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); int sessionId = packageInstaller.createSession(params); try { // 通过会话 ID 打开输出流,并将 APK 文件写入输出流中 PackageInstaller.Session session = packageInstaller.openSession(sessionId); OutputStream out = session.openWrite("app", 0, -1); FileInputStream in = new FileInputStream(apkFile); byte[] buffer = new byte[65536]; int c; while ((c = in.read(buffer)) != -1) { out.write(buffer, 0, c); } session.fsync(out); in.close(); out.close(); // 启动会话,等待应用程序安装完成 session.commit(createIntentSender(context, sessionId)); } catch (IOException e) { e.printStackTrace(); } } private IntentSender createIntentSender(Context context, int sessionId) { Intent intent = new Intent(context, getClass()); intent.putExtra(EXTRA_SESSION_ID, sessionId); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); return pendingIntent.getIntentSender(); } ``` 需要注意的是,静默升级需要在系统签名的应用程序中运行,并且需要 android.permission.INSTALL_PACKAGES 权限。另外,如果应用程序已经在运行,则静默升级可能会失败。

相关推荐

最新推荐

recommend-type

在Android系统源码中预置APK的方法

今天小编就为大家分享一篇关于在Android系统源码中预置APK的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

Android无需root实现apk的静默安装

主要介绍了Android无需root实现apk的静默安装 的相关资料,需要的朋友可以参考下
recommend-type

Android 通过代码安装 APK的方法详解

主要介绍了Android 通过代码安装 APK的方法详解,本文通过实例代码给大家介绍的非常详细,对大家的学习火锅工作具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Android studio 下的APK打包失败问题解决办法

Android studio 下的APK打包失败问题解决办法 今天遇到了一个奇怪的问题,本来在Android studio 1.4上运行的好好的程序,到了我更新完的Android studio 2.1上就打包失败了,但是用调试机直接运行则没问题。 最后在...
recommend-type

Android 8.0安装apk的实例代码

android 8.0安装apk需要请求未知来源权限 //xml配置 &lt;uses android:name=android.permission.REQUEST_INSTALL_PACKAGES/&gt; /** * 检测版本8.0 */ public void checkOreo() { if (SdkVersionUtils.hasOreo()) {//...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

深入了解MATLAB开根号的最新研究和应用:获取开根号领域的最新动态

![matlab开根号](https://www.mathworks.com/discovery/image-segmentation/_jcr_content/mainParsys3/discoverysubsection_1185333930/mainParsys3/image_copy.adapt.full.medium.jpg/1712813808277.jpg) # 1. MATLAB开根号的理论基础 开根号运算在数学和科学计算中无处不在。在MATLAB中,开根号可以通过多种函数实现,包括`sqrt()`和`nthroot()`。`sqrt()`函数用于计算正实数的平方根,而`nt
recommend-type

react的函数组件的使用

React 的函数组件是一种简单的组件类型,用于定义无状态或者只读组件。 它们通常接受一个 props 对象作为参数并返回一个 React 元素。 函数组件的优点是代码简洁、易于测试和重用,并且它们使 React 应用程序的性能更加出色。 您可以使用函数组件来呈现简单的 UI 组件,例如按钮、菜单、标签或其他部件。 您还可以将它们与 React 中的其他组件类型(如类组件或 Hooks)结合使用,以实现更复杂的 UI 交互和功能。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。