commit 9fc9ca69fb16aa9da42435010974a8d176c0def8Date:   Fri Aug 14 15:04:10 2020 +0800     增加打开关闭GPS/数据流量的广播diff --git a/frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java b/frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.javaold mode 100644new mode 100755index c9a26cb..0c1ff4a--- a/frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java+++ b/frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java@@ -1285,7 +1285,7 @@ public final class BroadcastQueue {                     Slog.w(TAG, "Background execution not allowed: receiving "                             + r.intent + " to "                             + component.flattenToShortString());-                    skip = true;+                  //  skip = true; // remove for not sendbroadcast issue                 }             }         }diff --git a/packages/apps/Settings/AndroidManifest.xml b/packages/apps/Settings/AndroidManifest.xmlindex b4ec440..87e4eff 100755--- a/packages/apps/Settings/AndroidManifest.xml+++ b/packages/apps/Settings/AndroidManifest.xml@@ -2235,6 +2235,23 @@                                       +   +    ++            +                 +            +            +                 +            ++                 +            ++                 +            +       +                                   diff --git a/packages/apps/Settings/src/com/android/settings/ShellSettingsBroadcastReceiver.java b/packages/apps/Settings/src/com/android/settings/ShellSettingsBroadcastReceiver.javanew file mode 100755index 0000000..58581ff--- /dev/null+++ b/packages/apps/Settings/src/com/android/settings/ShellSettingsBroadcastReceiver.java@@ -0,0 +1,84 @@+package com.android.settings;++import android.content.BroadcastReceiver;+import android.content.ComponentName;+import android.content.Context;+import android.content.Intent;+import android.util.Log;+import java.io.BufferedReader;+import java.io.InputStreamReader;++public class ShellSettingsBroadcastReceiver extends BroadcastReceiver {++    private static final String DATA_ENABLE = "com.chengwei.DATA_ENABLE";+    private static final String DATA_DISABLE = "com.chengwei.DATA_DISABLE";+private static final String GPS_ENABLE = "com.chengwei.GPS_ENABLE";+private static final String GPS_DISABLE = "com.chengwei.GPS_DISABLE" ;+    public ShellSettingsBroadcastReceiver() {+    }+    +    @Override+    public void onReceive(Context context, Intent intent) {+        Log.e("ShellSettingsBroadcastReceiver","action: "+intent.getAction());+        if (intent.getAction().equals(DATA_ENABLE)) {+execByRuntime("svc data enable");+        }else if(intent.getAction().equals(DATA_DISABLE)){+execByRuntime("svc data disable");+}else if(intent.getAction().equals(GPS_ENABLE)){+execByRuntime("settings put secure location_providers_allowed +gps");+}else if(intent.getAction().equals(GPS_DISABLE)){+execByRuntime("settings put secure location_providers_allowed -gps");+}+    }+++/**+ * 执行shell 命令, 命令中不必再带 adb shell+ * @param cmd+ * @return Sting  命令执行在控制台输出的结果+*/++public static String execByRuntime(String cmd) {+        Process process = null;+        BufferedReader bufferedReader = null;+        InputStreamReader inputStreamReader = null;+        try {+            process = Runtime.getRuntime().exec(cmd);+            inputStreamReader = new InputStreamReader(process.getInputStream());+            bufferedReader = new BufferedReader(inputStreamReader);++            int read;+            char[] buffer = new char[4096];+            StringBuilder output = new StringBuilder();+            while ((read = bufferedReader.read(buffer)) > 0) {+                output.append(buffer, 0, read);+            }+            return output.toString();+        } catch (Exception e) {+            e.printStackTrace();+            return null;+        } finally {+            if (null != inputStreamReader) {+                try {+                    inputStreamReader.close();+                } catch (Throwable t) {+                    +                }+            }+            if (null != bufferedReader) {+                try {+                    bufferedReader.close();+                } catch (Throwable t) {+                    +                }+            }+            if (null != process) {+                try {+                    process.destroy();+                } catch (Throwable t) {+                    +                }+            }+        }+    }+}

 

更多相关文章

  1. [置顶] Android上传文件到Web服务器,PHP接收文件(二)
  2. Android(安卓)应用中执行cd命令
  3. 使用sencha cmd创建android应用
  4. MAC中设置android adb环境变量
  5. Android(安卓)的提权 (root) 原理是什么?
  6. Linux x86 编译 Android(安卓)遭遇 gnu/stubs-64.h
  7. Android(安卓)MapView 申请apiKey
  8. Android预安装软件&adb命令&编译源码
  9. Android如何进行数字签名与优化

随机推荐

  1. Android应用开发中半透明效果实现方案
  2. 为Android编写实时游戏
  3. android view的缩放平移简单实现
  4. 增加Android可用内存
  5. android 常用api 接口签名验证
  6. android重要控件各种大全
  7. Android 横竖屏幕
  8. android UEventObserver的用法
  9. 谈谈 View 绘制流程
  10. android MTP 过滤指定的文件格式