当前位置: 首页 > news >正文

android为第三方提供部分系统接口

文章目录

  • Settings - 亮灭屏
  • Settings - 恢复出厂设置
  • Settings - 数字锁屏/解锁
  • Settings - 设置系统时间
  • PackageInstaller - 安装/卸载第三方应用

摘要:本文对系统模块进行改造,提供广播等形式的接口对外提供无法直接调用的系统级别接口,实现部分功能的集合。如果是广播形式,需要后台允许,避免被系统拦截。不定期更新。

Settings - 亮灭屏

一、注册静态广播

Index: packages/apps/Settings/AndroidManifest.xml
===================================================================
--- packages/apps/Settings/AndroidManifest.xml	(版本 479)
+++ packages/apps/Settings/AndroidManifest.xml	(版本 480)
@@ -4742,6 +4742,15 @@
             </intent-filter>
         </service>
+
+        <receiver android:name=".BootCompleteReceiver"
+                  android:exported="true">
+            <intent-filter>    
+                <action android:name="android.intent.action.SCREEN_STATE"/>
+            </intent-filter>
+        </receiver> 
         <!-- This is the longest AndroidManifest.xml ever. -->
     </application>
 </manifest>

二、功能实现

Index: packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java
===================================================================
--- packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(不存在的)
+++ packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(版本 480)
@@ -0,0 +1,48 @@
+package com.android.settings;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.os.PowerManager;
+import android.os.SystemClock;
+import android.util.Log;
+
+public class BootCompleteReceiver extends BroadcastReceiver {
   
+    private static String TAG ="BootCompleteReceiver";
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
   
+        String action = intent.getAction();
+        if ("android.intent.action.SCREEN_STATE".equals(action)) {
   
+            boolean status = intent.getBooleanExtra("screen_state", false);
+            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+            if (status) {
   
+                pm.wakeUp(SystemClock.uptimeMillis());
+            } else {
   
+                pm.goToSleep(SystemClock.uptimeMillis());
+            }
+            return;
+        }
+    }
+}

Settings - 恢复出厂设置

一、注册静态广播

Index: packages/apps/Settings/AndroidManifest.xml
===================================================================
--- packages/apps/Settings/AndroidManifest.xml	(版本 480)
+++ packages/apps/Settings/AndroidManifest.xml	(版本 481)
@@ -4748,6 +4748,7 @@
                   android:exported="true">
             <intent-filter>    
+                <action android:name="com.android.settings.ACTION_ODM_MASTER_CLEAR"/>
             </intent-filter>
         </receiver> 

二、功能实现

Index: packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java
===================================================================
--- packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(版本 480)
+++ packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java	(版本 481)
@@ -44,5 +44,21 @@
             }
             return;
         }
+
+        if ("com.android.settings.ACTION_ODM_MASTER_CLEAR".equals(action)) {
   
+            Intent clearIntent = new Intent(Intent.ACTION_MASTER_CLEAR);
+            clearIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+            clearIntent.putExtra(Intent.EXTRA_REASON, "MasterClearConfirm");
+            context.sendBroadcast(clearIntent);
+            return;
+        }
     }
 }

Settings - 数字锁屏/解锁

一、注册静态广播

Index: packages/apps/Settings/AndroidManifest.xml
===================================================================
--- packages/apps/Settings/AndroidManifest.xml	(版本 481)
+++ packages/apps/Settings/AndroidManifest.xml	(版本 482)
@@ -4749,6 +4749,7 @@
             <intent-filter>    
+                <action android:name="android.intent.action.LOCKSCREEN"/>
             </intent-filter>
         </receiver> 

二、功能实现

Index: packages/apps/Settings/src/com/android/settings/BootCompleteReceiver.java
==============================================
http://www.dtcms.com/a/51620.html

相关文章:

  • Linux 系统不同分类的操作命令区别
  • Windows系统编程(八)线程同步
  • 【gRPC】Java高性能远程调用之gRPC详解
  • 大语言模型中温度参数(Temperature)的核心原理
  • 大学至今的反思与总结
  • python-leetcode-零钱兑换 II
  • EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信
  • 内核编程七:Linux 内核日志的级别
  • DeepSeek大模型深度解析:架构、技术与应用全景
  • SAP-ABAP:SAP第二代增强之隐式增强(Implicit Enhancements)和Enhancement Framework 的详细解析
  • 密码学(一)
  • 混合专家模型(MoE):高效处理复杂任务的智能架构,DeepSeek性能出色的秘诀
  • SpringCloud微服务开发工程细节
  • 1.15-16-17-18迭代器与生成器,函数,数据结构,模块
  • LeetCode 718.最长重复子数组(动态规划,Python)
  • DeepSeek学术写作全流程提示词
  • LLM自动金融量化-CFGPT
  • 肠胃镜过程描述(普通、无痛)
  • 学习记录-缺陷
  • 如何用FFmpeg高效拉流(避坑指南)
  • 数据库原理4
  • 为AI聊天工具添加一个知识系统 之135 详细设计之76 通用编程语言 之6
  • java项目之基于ssm的在线视频网站开发(源码+文档)
  • java8中young gc的垃圾回收器选型,您了解嘛
  • 基于SpringBoot+mybatis+layui就业管理系统设计和实现
  • Git安装与配置
  • 第一个 C++ 程序
  • C++————引用
  • SpringTask 引起的错误
  • 【折线图 Line】——12