android 如何获取当前 Activity 的类名和包名
其一:getClass().getSimpleName()
public static String getTopActivity(Context context){
ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
// Log.d("Chunna.zheng", "pkg:"+cn.getPackageName());//包名
// Log.d("Chunna.zheng", "cls:"+cn.getClassName());//包名加类名
return cn.getClass().getSimpleName();
}
其二:getClassName();
private String getCurrentActivityName() {
ActivityManager am = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
return componentInfo.getClassName();
}
其三:getPacakgeName() +是否在当前Task的栈顶
private String getTopActivityPacakgeName(){
String currentApp = "CurrentNULL";
UsageStatsManager usm = (UsageStatsManager) mContext.getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time);
if (appList != null && appList.size() > 0) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : appList) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
Log.d("SideKey", "currentApp = "+currentApp);
return currentApp;
}
其四:getProcessNameByActivityName() 获取跳转的activity所在的进程Id 【不常用】
public static String getProcessNameByActivityName(Context context, String activityName) {
PackageInfo mPackageInfo = null;
try {
mPackageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_ACTIVITIES);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (mPackageInfo != null) {
for (ActivityInfo activityInfo : mPackageInfo.activities) {
if (activityInfo.name != null && activityInfo.name.endsWith(activityName)) {
//activityInfo.processName是activity所在的进程
//activityInfo.packageName是项目的包名,也就是com.**.application,并非进程名称
return activityInfo.processName;
}
}
}
return "";}
其五:isRunning() 判断当前进程是否已启动 【不常用】
public static boolean isRunning(Context context, String packageName) {
ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> infos = am.getRunningAppProcesses();
if (infos == null) {
return false;
}
for (ActivityManager.RunningAppProcessInfo rapi : infos) {
if (rapi.processName.equals(packageName))
return true;
}
return false;
}
其六:isServiceRunning() : 获取当前运行的service 【不常用】
public static boolean isServiceRunning(String serviceClassName){
final ActivityManager activityManager = (ActivityManager)
Application.getContext().getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningServiceInfo> services =
activityManager.getRunningServices(Integer.MAX_VALUE);
for (RunningServiceInfo runningServiceInfo : services) {
if (runningServiceInfo.service.getClassName().equals(serviceClassName)){
return true;
}
}
return false;
}
更多方法获取了解:
分别得到当前类的类名和包名
String localClassName = getLocalClassName(); //String ClassName = getClassName();
String packageName = getPackageName();
String name = getClass().getName();String typename = getClass().getTypeName()
String simpleName = getClass().getSimpleName();
String canonicalName = getClass().getCanonicalName();举例:
1.localClassName = "MainActivity"
2.packageName = "com.android.server"
3.name = "com.android.server.MainActivity"4.typename = "com.android.server.MainActivity"
5.simpleName = "MainActivity"
6.canonicalName = "com.android.server.MainActivity"
相关文章:
android 如何获取当前 Activity 的类名和包名
其一:getClass().getSimpleName() public static String getTopActivity(Context context){ ActivityManager am (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); ComponentName cn am.getRunningTasks(1).get(0).topAct…...
Spring Boot 项目 myblog 整理
myblog 项目是一个典型的 Spring Boot 项目,主要包括用户注册、登录、文章管理(创建、查询、更新、删除)等功能。 1. 项目结构与依赖设置 项目初始化与依赖 使用 Spring Initializr 创建项目。引入必要的依赖包: Spring Boot W…...
uniapp 城市选择插件
uniapp城市选择插件 如上图 地址 完整demo <template><view><city-selectcityClick"cityClick":formatName"formatName":activeCity"activeCity":hotCity"hotCity":obtainCitys"obtainCitys":isSearch&quo…...
测试工程师如何在面试中脱颖而出
目录 1.平时工作中是怎么去测的? 2.B/S架构和C/S架构区别 3.B/S架构的系统从哪些点去测? 4.你为什么能够做测试这一行?(根据个人情况分析理解) 5.你认为测试的目的是什么? 6.软件测试的流程ÿ…...
Mesh路由组网
Mesh无线网格网络,多跳(multi-hop)网络,为解决全屋覆盖信号,一般用于家庭网络和小型企业 原理 网关路由器(主路由,连接光猫),Mesh路由器(子路由,…...
LeetCode131:分割回文串
题目链接:131. 分割回文串 - 力扣(LeetCode) 代码如下: class Solution { private:vector<vector<string>> result;vector<string> path; // 放已经回文的子串void backtracking (const string& s, int s…...
详细解析 devmem 命令:在 Linux 系统中直接访问内存的利器
目录 什么是 devmem?为什么需要 devmem?devmem 命令的基本语法devmem 在硬件调试中的应用安全性与风险devmem 的常见应用示例结论 在嵌入式系统开发和硬件调试中,开发者经常需要直接与硬件打交道,访问和修改内存中某些特定区域的内…...
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
本文由Markdown语法编辑器编辑完成。 1. 需求背景: 最近在启动一个服务时,突然发现它的一个接口,被另一个服务ip频繁的请求。 按理说,之前设置的是,每隔1分钟请求一次接口。但从日志来看,则是1秒钟请求一次ÿ…...
【前端知识】nodejs项目配置package.json深入解读
package.json详细解读 文件解读一、文件结构二、字段详解三、使用场景四、注意事项 组件版本匹配规则 文件解读 package.json 文件是 Node.js 项目中的一个核心配置文件,它位于项目的根目录下,并包含项目的基本信息、依赖关系、脚本、版本等内容。以下是…...
XGBOOST算法Python实现(保姆级)
摘要 XGBoost算法(eXtreme Gradient Boosting)在目前的Kaggle、数学建模和大数据应用等竞赛中非常流行。本文将会从XGBOOST算法原理、Python实现、敏感性分析和实际应用进行详细说明。 目录 0 绪论 一、材料准备 二、算法原理 三、算法Python实现 3…...
JDK、MAVEN与IDEA的安装与配置
1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境,使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载: MAVEN下载传送…...
输出比较简介
输出比较简介 主要是用来输出PWM波形,这个波形是驱动电机的(智能车和机器人等)必要条件 OC(Output Compare)输出比较,还有IC,全称是Input Capture,意为输入捕获,还有CC…...
什么是反向 DNS 查找以及它的作用是什么?
反向DNS查询(rDNS)是一种技术,用于确定与某个IP地址对应的域名。当我们对一个IP地址进行反向DNS查询时,实际上是向域名系统(DNS)的特殊部分请求信息,这部分被称为PTR记录。PTR记录会返回与这个I…...
集群聊天服务器(13)redis环境安装和发布订阅命令
目录 环境安装订阅redis发布-订阅的客户端编程环境配置客户端编程 功能测试 环境安装 sudo apt-get install redis-server 先启动redis服务 /etc/init.d/redis-server start默认在6379端口上 redis是存键值对的,还可以存链表、数组等等复杂数据结构 而且数据是在…...
[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…...
Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装
Python Matplotlib 安装指南:使用 Miniconda 实现跨 Linux、macOS 和 Windows 平台安装 Matplotlib是Python最常用的数据可视化工具之一,结合Miniconda可以轻松管理安装和依赖项。在这篇文章中,我们将详细介绍如何使用Miniconda在Linux、mac…...
DimensionX 部署笔记
目录 生成视频用CogVideoX-5b-I2V 推理代码: DimensionX 生成视频用CogVideoX-5b-I2V 推理代码: 可以生成,从左向右旋转的,也可以生成从上往下旋转的: import torch from diffusers import CogVideoXImageToVideo…...
django从入门到精通(五)——表单与模型
好的,下面将详细介绍 Django 的表单与模型,包括它们的定义、使用、如何在 Django Admin 中结合使用,以及相关的字段类型和验证机制。 Django 模型与表单 1. Django 模型 Django 模型是一个 Python 类,用于定义数据库中的数据结…...
C语言Day 03 学习总结
Day 03 学习总结 流程控制语句 顺序结构 程序从上到下依次执行。每一条语句顺序执行,直到结束。 选择结构 程序根据条件选择执行某一条分支。包括 if-else 和 switch-case。 循环结构 程序反复执行某段代码。包括 for、while、do-while。 跳转结构 控制程序直接跳…...
kafka中是如何快速定位到一个offset的
定位到具体的segment日志文件,采用二分法先定位到index索引文件计算查找的offset在日志文件的相对偏移量 1、分区和日志段: 每个主题的分区(Partition)被划分为多个日志段(Log Segment)。每个日志段是一个…...
欢迎使用Marp for VS Code
欢迎使用Marp for VS Code 【免费下载链接】marp-vscode Marp for VS Code: Create slide deck written in Marp Markdown on VS Code 项目地址: https://gitcode.com/gh_mirrors/ma/marp-vscode 用Markdown制作专业演示文稿 简洁的语法实时预览多格式导出 ### 第四步&…...
终极FanControl风扇控制指南:如何彻底告别Windows风扇噪音与过热烦恼
终极FanControl风扇控制指南:如何彻底告别Windows风扇噪音与过热烦恼 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...
AI绘画的三重危机:颜料、像素与剽窃
1. 这不是技术讨论,而是一场正在发生的行业地震“Paint, Pixels, and Plagiarism”——光看这个标题,你就能闻到火药味。它没说“AI绘画工具使用指南”,也没写“Stable Diffusion参数调优手册”,而是把颜料(Paint&…...
2026降AIGC技术白皮书:全网工具实测雷达图与智能选型助手
2026年,随着AIGC技术的深度渗透,学术写作正面临前所未有的挑战与机遇。论文中AI痕迹的显性化、查重系统的智能化升级以及学术规范的严格审查,让“去AI化”成为每位研究者必须直面的现实命题。传统的文本润色工具已难以满足日益严苛的降AIGC需…...
算力运维迎革命! OpsAMAX 上线,AI 让服务器集群运维 “零门槛”
算力时代,大模型、生物医药、智能制造等领域的飞速发展,让 HPC、AI 服务器集群成为核心生产力。但算力越强、集群越复杂,运维难题就越突出:告警刷屏找不到故障根因、老专家经验没法传承、异构设备管不动、故障停机拖垮业务进度………...
企业级应用如何利用 Taotoken 实现多模型智能路由与成本控制
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何利用 Taotoken 实现多模型智能路由与成本控制 对于需要稳定、高效调用大模型的企业开发团队而言,直接对…...
终极指南:用Python AUTOSAR轻松生成ARXML文件,告别昂贵商业工具
终极指南:用Python AUTOSAR轻松生成ARXML文件,告别昂贵商业工具 【免费下载链接】autosar A set of python modules for working with AUTOSAR XML files 项目地址: https://gitcode.com/gh_mirrors/au/autosar 还在为AUTOSAR工具链的高昂费用和复…...
手机和电脑怎样换背景颜色?2026 年最全操作指南来了
想要轻松改变设备背景颜色却不知道从何下手?无论你用的是手机还是电脑,换背景颜色其实比你想象的要简单得多。本篇文章将为你详细介绍各种设备和软件上的背景颜色更换方法,帮你快速掌握这项基础操作技能。手机换背景颜色操作方法完全指南iOS …...
为什么AI终于能进车间了?从聊天工具到生产力,这三件事正在发生
中石化车间里的AI 2026年5月,中石化发布了"烽火"工业智能体。 这个智能体不是用来聊天的,而是能直接操作工业软件、分析生产数据、跑仿真。它是石油化工行业第一个真正能进车间的数字专家。 在这之前,AI在工业场景里的应用,大多停留在"数据分析"层面…...
PowerToys中文汉化:3分钟让微软效率工具变身中文版
PowerToys中文汉化:3分钟让微软效率工具变身中文版 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 还在为PowerToys的英文界面发愁吗…...
