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

发布于:2025-03-09 ⋅ 阅读:(110) ⋅ 点赞:(0)


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

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
==============================================

网站公告

今日签到

点亮在社区的每一天
去签到