栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android11添加自定义静态广播无法获取解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android11添加自定义静态广播无法获取解析

硬件平台:展锐

软件平台:Android11

    近日,新做一需求,需要app间实现接口的调用,但是被调用app的功能接口却在activity类中实现,需求上看是需要被调用的app未启动也可以实现功能的调用,无奈,实现了自定义的广播,在广播里重新实现了activity类里边的功能,code如下:

diff --git a/vendor/sprd/platform/packages/apps/LogManager/src/com/sprd/logmanager/BootCompletedReceiver.java b/vendor/sprd/platform/packages/apps/LogManager/src/com/sprd/logmanager/BootCompletedReceiver.java
index 335af6dbab..c729b2b25f 100755
--- a/vendor/sprd/platform/packages/apps/LogManager/src/com/sprd/logmanager/BootCompletedReceiver.java
+++ b/vendor/sprd/platform/packages/apps/LogManager/src/com/sprd/logmanager/BootCompletedReceiver.java
@@ -14,7 +14,12 @@ import com.sprd.logmanager.logui.SceneInfo;
 import com.sprd.logmanager.database.LogSceneManager;
 import com.sprd.logmanager.database.LogManagerPreference;
 import com.sprd.logmanager.logcopy.service.LogCopyService;
+import com.sprd.logmanager.utils.ShellUtils;
 
+import android.os.Message;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.HandlerThread;
 
 public class BootCompletedReceiver extends BroadcastReceiver {
 
@@ -22,6 +27,11 @@ public class BootCompletedReceiver extends BroadcastReceiver {
 
     private LogManagerPreference mLogManagerPreference;
     private APLogControl mApLogControl;
+    private LogHandler mLogHandler;
+    HandlerThread mLogHandlerThread;
+
+
+    private static final int CLEAR_LOG = 0;
 
     @Override
     public void onReceive(Context context, Intent intent) {
@@ -73,9 +83,57 @@ public class BootCompletedReceiver extends BroadcastReceiver {
                 }).start();
             }
 
 public class BootCompletedReceiver extends BroadcastReceiver {
 
@@ -22,6 +27,11 @@ public class BootCompletedReceiver extends BroadcastReceiver {
 
     private LogManagerPreference mLogManagerPreference;
     private APLogControl mApLogControl;
+    private LogHandler mLogHandler;
+    HandlerThread mLogHandlerThread;
+
+
+    private static final int CLEAR_LOG = 0;
 
     @Override
     public void onReceive(Context context, Intent intent) {
@@ -73,9 +83,57 @@ public class BootCompletedReceiver extends BroadcastReceiver {
                 }).start();
             }
         }
+
+        if (action != null && action.equals("TAL.APP.REMOVE.YLOG")) {
+            if (null == mLogHandlerThread) {
+                mLogHandlerThread = new HandlerThread(TAG);
+                mLogHandlerThread.start();
+            }
+
+            if (null == mLogHandler) {
+                mLogHandler = new LogHandler(mLogHandlerThread.getLooper());
+            }
+
+            Message clearLog = mLogHandler
+                     .obtainMessage(CLEAR_LOG);
+            mLogHandler.sendMessage(clearLog);
+        }
+
         
     }
 
+    public void deleteYlogDir() {
+        try {
+            Log.d(TAG, "deleteYlogDirectoryOnly work!");
+            String[] logPaths = new String[] { "/data/ylog",
+                    "/storage/emulated/0/ylog", "/storage/sdcard0/ylog" };
+            for (int i = 0; i < logPaths.length; i++) {
+                String cmd = String.format("rm -rf %s ", logPaths[i]);
+                ShellUtils.runCommand(cmd);
+            }
+            return;
+        } catch (Exception e) {
+            // TODO: handle exception
+            e.printStackTrace();
+        }
+    }
+
+    class LogHandler extends Handler {
+        public LogHandler(Looper looper) {
+                 super(looper);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case CLEAR_LOG:
+                    deleteYlogDir();
+                    Log.d(TAG, "====== app want to clear log.");
+                break;
+            }
+        }
+    }
+
     public  void doBootAction(Context context){
         /**
          * create modem assert listener thread under situation as follow: 1.boot completed 2.when
diff --git a/vendor/sprd/platform/packages/apps/LogManager/user/AndroidManifest.xml b/vendor/sprd/platform/packages/apps/LogManager/user/AndroidManifest.xml
index cf150c1943..43385c05ab 100755
--- a/vendor/sprd/platform/packages/apps/LogManager/user/AndroidManifest.xml
+++ b/vendor/sprd/platform/packages/apps/LogManager/user/AndroidManifest.xml
@@ -92,6 +92,7 @@
             android:directBootAware="true">
             
                 
+                
                 
             
         
diff --git a/vendor/sprd/platform/packages/apps/LogManager/userdebug/AndroidManifest.xml b/vendor/sprd/platform/packages/apps/LogManager/userdebug/AndroidManifest.xml
index 5549984178..2bbee08000 100755
--- a/vendor/sprd/platform/packages/apps/LogManager/userdebug/AndroidManifest.xml
+++ b/vendor/sprd/platform/packages/apps/LogManager/userdebug/AndroidManifest.xml
@@ -90,6 +90,7 @@
             android:directBootAware="true">
             
                 
+                
             
         
          

    需要注意的点,就是广播需要注册为静态广播,否则app不启动无法响应,再就是注意广播的发送方需要添加intent字段才可以,示例如下:

1、使用am命令模拟如下:

adb shell am broadcast -n "com.autonavi.amapauto/com.autonavi.amapauto.adapter.internal.AmapAutoBroadcastReceiver"

2、代码实现如下:

private void setNaviCasualMute(int mute) {
    Intent intent = new Intent();
    intent.setClassName("com.autonavi.amapauto", "com.autonavi.amapauto.adapter.internal.AmapAutoBroadcastReceiver");
    mContext.sendBroadcastAsUser(intent, UserHandle.SYSTEM);

}

Mark记录....

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035856.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号