Android Framework 获取所有应用的运行异常情况

2024-04-26 14:12

本文主要是介绍Android Framework 获取所有应用的运行异常情况,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Mdm需求,获取所有应用运行异常情况

  • 实现

Android_source/frameworks/base/core/java/android/app/IActivityManager.aidl

// add getAppRuntimeExceptionInfo
List getAppRuntimeExceptionInfo();

Android_source/frameworks/base/service/core/java/com/android/server/am/ActivityManagerService.java

List<String[]> listErrors = new ArrayList();public List getAppRuntimeExceptionInfo() throws RemoteException{return listErrors;
}void handleApplicationCrashInner(String eventType, ProcessRecord r, String processName, ApplicationErrorReport.CrashInfo crashInfo){...// add getAppRuntimeExceptionInfo starttry {synchronized (this) {if (listErrors.size() == 0) {String[] firstError = new String[2];firstError[0] = packageName;firstError[1] = String.valueOf(1);listErrors.add(firstError);} else {List<String> allErrors = new ArrayList<>();for (int i = 0; i < listErrors.size(); i++) {String[] arrayErrors = listErrors.get(i);List<String> listStrings = Arrays.asList(arrayErrors);allErrors.addAll(listStrings);}for (int i = 0; i < listErrors.size(); i++) {String[] arrayErrors = listErrors.get(i);boolean isContains = allErrors.contains(packageName);if (isContains) {if (packageName.equals(arrayErrors[0])) {int errorCount = Integer.parseInt(arrayErrors[1]);arrayErrors[1] = String.valueOf(errorCount + 1);}} else {String[] newErrors = new String[2];newErrors[0] = packageName;newErrors[1] = String.valueOf(1);listErrors.add(newErrors);break;}}}} catch (Throwable t) {Log.e(TAG, "appExceptionInfo  listErrors ");}// add getAppRuntimeExceptionInfo endmAppErrors.crashApplication(r, crashInfo);}
  • 调用
    /***所有应用运行异常情况** @param* @return List<String []>*                     String[0]:终端应用包名*                     String[1]:终端应用发生异常次数*/public List<String[]> getAppRuntimeExceptionInfo() {LogUtils.v(TAG, "getAppRuntimeExceptionInfo() ");final long ident = Binder.clearCallingIdentity();List<String[]> listResult = new ArrayList();try {listResult= ActivityManager.getService().getAppRuntimeExceptionInfo();LogUtils.v(TAG, "getAppRuntimeExceptionInfo result: " + listResult.toString());} catch (Exception e) {e.printStackTrace();}Binder.restoreCallingIdentity(ident);return listResult;}

这篇关于Android Framework 获取所有应用的运行异常情况的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/937800

相关文章

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

解决Entity Framework中自增主键的问题

《解决EntityFramework中自增主键的问题》:本文主要介绍解决EntityFramework中自增主键的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录Entity Framework中自增主键问题解决办法1解决办法2解决办法3总结Entity Fram