安卓获取顶层应用的包名

Android 获取栈顶应用包名 方法来获取当前运行的任务列表,然后从中获取栈顶的任务(即栈顶应用)。以下是获取栈顶应用包名的示例代码:(代码是java,想用kotlin的自己用AS转一下就行了)需求:因为需要做到应用锁功能,所以需要对前台展示的App进行判断锁屏,所以当应用锁的后台服务挂起时,需要对栈顶的应用包名进行判断。,如果你某个App使用了,悬浮窗,未关闭的情况下,则会一直是那个App。来判断最近使用的App是哪个,是的,只能判断最新使用的App。另外判断当前正在展示的App是哪个,可以用。这样就可以获取栈顶的App了。 阅读详情

安卓获取当前应用的包名

1.权限
 <uses-permission  
        android:name="android.permission.PACKAGE_USAGE_STATS"  
        tools:ignore="ProtectedPermissions" />  

注:需要加入 xmlns:tools="http://schemas.android.com/tools",否则报错


2.获取包名

//获取顶端应用的包名
public String getTopAppPack() {
		String topPackageName = "";
		//android5.0以上获取方式
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
		        if(isPermissionNoSwitch()){
		        	//没有授权时跳转授权
	        	 	Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
			        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			        startActivity(intent);
			        return topPackageName;
		        }
	            UsageStatsManager mUsageStatsManager = (UsageStatsManager) getSystemService("usagestats");
	            long time = System.currentTimeMillis();
	            int start = 3600 * 1000 * 12;//12个小时,时间段过短当程序运行一段时间后会导致获取失败
	            List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - start, time);
	            if (stats != null) {
	                SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
	                for (UsageStats usageStats : stats) {
	                    mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
	                }
	                if (mySortedMap != null && !mySortedMap.isEmpty()) {
	                    topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
	                    Log.e("TopPackage Name", topPackageName);
	                }
	            }
	            
	        }
		//android5.0以下获取方式
		else{
			 ActivityManager activityManager = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
            List<ActivityManager.RunningTaskInfo> tasks = activityManager.getRunningTasks(1);
            if(tasks != null && tasks.size() > 0){
	            ActivityManager.RunningTaskInfo taskInfo = tasks.get(0);
	            topPackageName = taskInfo.topActivity.getPackageName();
            }else{
            	//获取失败
            }
        }
		return topPackageName;
    }
	
	//检测获取top应用的包名的权限是否开启
	private boolean isPermissionNoSwitch() {  
        long ts = System.currentTimeMillis();  
        UsageStatsManager usageStatsManager = (UsageStatsManager) getApplicationContext()  .getSystemService("usagestats");  
        List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, 0, ts);  
        if (queryUsageStats != null && !queryUsageStats.isEmpty()) {  
            for(UsageStats stats : queryUsageStats){
            	Log.e(TAG, " stats pack: " + stats.getPackageName());
            	if(stats.getPackageName().equals(getPackageName())){
            		return false;
            	}
            }
        	return true;  
        }  
        return true;  
		
        //失败
//		PackageManager pm = getPackageManager();  
//        boolean permission = (PackageManager.PERMISSION_GRANTED == pm.checkPermission("android.permission.PACKAGE_USAGE_STATS", getPackageName()));  
//        if (permission) {  
//            return false;
//        }else {  
//            return true;
//        }  
        
        //失败
        //return checkCallingOrSelfPermission("android.permission.PACKAGE_USAGE_STATS") != PackageManager.PERMISSION_GRANTED;
    }
	
	//判断当前设备中有没有“有权查看使用权限的应用”这个选项
	private boolean hasUsageSettingActivity() {  
        PackageManager packageManager = getApplicationContext().getPackageManager();  
        Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);  
        List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);  
        return list.size() > 0;  
    }  
	


Android 8应用获取上层系统全局Window的区域 Android8应用获取上层系统全局Window的区域简介原理具体实现 简介 项目中遇到了一个需求,就是需要知道一个Activity或者通过WindowManager.addView添加的上层所有视图的区域,比如其他Activity,或者其他windowManager通过addView接口添加的window,以供业务实现使用。同时还需要在window更新位置,消失,显示时候,通知客户端。 经过对源码的了解,确定了大体方案。 原理 我们先了解下系统添加window的大体流程。 ![在这里插入图片描述](ht 阅读详情

相关推荐

【Android开发】 获取手机上的各种apk的包名和类名,实现跳转到其他应用

应用装在手机上 情况一:使用Android 调试桥 (adb) 使用数据线连接电脑,并打开 USB 调试,找到你的Android-SDK所在 如我的:“D:\Android\Sdk\platform-tools” 在地址栏输入CMD按回车启动命令行 在手机上将你需要获取包名和Activity名的应用程序启动,这里我运行QQ 电脑上doc窗口输入: adb shell dumpsys window...

qq_41618587的博客 2293

android 获得顶层窗口_获取顶层window主窗口 | 获取当前View父视图 | 获取最上层(当前)控制器...

在一般应用中,我们使用 addSubview 方法是添加到当前控制器 ViewController 上的,但是对于某些情况下,我们需要把视图添加到顶层控制器视图上,即要获取顶层视图控制器。当前顶层窗口//UIWindow *window = [[UIApplication sharedApplication].windows lastObject];UIWindow *window = [UIAp...

weixin_39944638的博客 3670

Android 获取设备中所有应用的包名

private List<String> packageNames; //读取系统所有包名 private void allPackage() { //获取PackageManager PackageManager packageManager = context.getPackageManager(); //获取所有已...

码点 3265

安卓5.0以后获取顶层应用包名的方法(6.0,7.0,8.0均可用)

安卓5.0屏蔽了getRunningAppProcesses@ActivityManager方法,因此不能使用该方法完成获取顶层应用包名的需求。若要在5.0及以后的版本上获取顶层app的包名,可以使用Context的“usagestats”服务完成该需求。但需注意以下几点: 有的手机厂商会屏蔽“usagestats”这一服务,据悉会有魅族、小米等厂商,但我的MX5上是可以正常获取的。 该服务需要...

weixin_34185512的博客 712

Android获取栈顶的应用包名方法

下面小编就为大家分享一篇Android获取栈顶的应用包名方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 489

WMS新增获取最上层窗口的方法

这里写自定义目录标题前言aidl新增WMS新增 前言 代码环境为Android8.1 aidl新增 framework/base/core/java/android/view/IWindowManager.aidl interface IWindowManager { ................. String getTopWindow(); } WMS新增 framework/base/services/core/java/com/android/server/wm/WindowMana

weixin_41052213的博客 641

东方财富网API接口逆向分析:手把手教你破解那个带jQuery回调的股票数据接口

本文详细解析了东方财富网股票数据API接口的逆向工程实战技巧,重点介绍了JSONP接口的核心机制、参数解析及数据处理方法。通过Python代码示例演示了如何构造请求、处理分页数据及应对反爬策略,帮助开发者高效获取股票数据。文章还提供了完整的爬虫实现案例和常见问题排查指南。

weixin_30790841的博客 714

获取 运行 应用包名 顶层交互 TOP包名 主Activity

获取 运行 应用包名 顶层交互 TOP包名 主Activity //获取当前系统中 正在运行的 APK包名 ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE) ;             List appList = mAct

sengeiou的专栏 5340

快速上手:网页版EggNOG功能注释全流程解析

本文详细解析了网页版EggNOG在蛋白序列功能注释中的全流程操作,从初识工具到实战技巧,涵盖FASTA格式处理、参数设置、结果解读及常见问题解决方案。特别适合生物信息学初学者快速掌握这一高效注释工具,提升非模式生物基因组研究的注释效率。

weixin_29310631的博客 189

Python量化交易实战:从零搭建你的第一个多因子选股模型(附完整代码)

本文是一份详细的Python量化交易入门实战指南,手把手教你从零搭建第一个多因子选股模型。内容涵盖环境配置、数据获取、因子挖掘与有效性检验、多因子合成以及完整的策略回测与绩效评估,并附有可直接运行的完整代码,帮助初学者快速掌握量化交易的基本概念与实践流程。

resnet7explorer的博客 932

java抓取app页面_GitHub - Github-Benjamin/AndroidDevicesAPPInfo: Java GUI程序 - AndroidAPP测试工具提供快速获取屏幕焦点、To...

AndroidDevicesInfoJava GUI工具 - 获取Android设备最顶层应用程序相关信息,并提供备份功能;简介:该程序通过Java执行ADB CMD命名获取回调信息判断设备信息,获取信息时通过多线程操作节约读取时间;1、获取Android屏幕顶层焦点应用名称,可用于辨别Activity和悬浮窗页面2、获取Android屏幕顶层应用,不能识别悬浮窗3、获取应用程序位数 PackBi...

weixin_32309879的博客 210

云安全技术——搭建VPN

VPN(Virtual Private Network)是一种可以在公共网络上建立安全连接的技术。VPN是实现保密通信的基本手段,在windows系统上,可以直接进行VPN服务的搭建。1.VPN的工作原理:通过使用加密协议和认证机制,将本地计算机和远程服务器之间的通信加密和保护。2.VPN的分类:根据不同的方式和用途,VPN可以分为不同类型,例如远程访问VPN、站点到站点VPN等。3.VPN的优势:VPN可以带来许多好处,如提高数据安全性、隐藏真实IP地址、突破地理限制等。4.

qq_53142796的博客 3万+

android-如何获得当前正在运行的activity的相关信息

ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); RunningTaskInfo info = manager.getRunningTasks(1).get(0); String shortClassName = info.topActivity.getShortC...

mmdev 137

yolov10+bytetrack实现多目标跟踪

在训练yolov10权重的时候一定要注意将类别信息改成自己的信息。把类比什么的改成自己的数据集,数据集的路径也要替换自己的路径。就可以训练自己的数据集了,训练完之后得到自己的权重文件。自己创建一个.yaml文件用于自己数据集的路径选择。工具标注自己的数据集,一定要分清楚自己的类别信息。使用以下代码可以按照比例划分自己的数据集。之后打开命令框输入以下命令进入标注页面。只需要输入好自己数据集的路径就可以开始。将代码里面的nc改成自己的真实类别。修改完之后,运行train.py。然后标注自己的数据集就行。

l15717690526的博客 1524

光谱数据预处理综合

除了化学信息,光谱还包含其他不相关或不需要的信息,如电噪声,基质背景,杂散光,散射效应等。在用化学计量学方法建立校准模型时,利用预处理方法消除光谱数据中的无关信息和噪声是非常必要的。

qq_44204759的博客 5189

Android 5.0之后获取设备顶层包名问题

大家知道Android 5.0之后之前的获取TopActivity方法无可用了,网上还有一些关于让用户勾选什么状态的。有个方法可以处理这个问题,看代码: public static String getTopPackageName(Context context) { String packageName = ""; try { Acti

cheligeer 2628

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

获取android com包名,Android系统中获取进程(和顶端包名)

概要:android L前我们可以使用getRunningTasks(int maxNum)maxNum int: The maxNumnumber of entries to return in the list. The actual number returned may be smaller, depending on how many tasks the user has started...

weixin_31313629的博客 1161

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android 获取不同屏幕的最顶层界面包名

【代码】Android 获取不同屏幕的最顶层界面包名。

qq_27494201的博客 351

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android获取当前正在运行的栈顶的应用包名

思路是获取当前正在运行的程序包名,判断是否自己想要的包名,然后进行一系列操作 查看源文件 打印? ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivi

mergerly的专栏 4274

Android通过包名获取应用信息

包名

Gufra_Yin的博客 4489

查看安卓手机第三方应用的包名

查看第三方应用包名1.下载adb插件2.使用adb查看应用包名 1.下载adb插件 adb下载连接 adb的主要作用是查看安卓手机的操作日志,我们可以通过操作日志来拿到当前手机所打卡应用的信息 1.下载adb 打开adb下载连接,选择操作系统相对应的下载内容 进行下载 2.配置环境变量 下载完adb插件之后,根据自己的意愿存放在某个文件夹里 复制当前插件所在的目录,右击我的电脑 =》 属性 =》高级设置 =》环境变量 =》找到path =》将路径粘贴进去 2.使用adb查看应用包名 1.连接安卓

csdn_chengpeng的博客 4202

安卓通过包名获取应用信息并打开应用

针对指定包名来获取某个应用的图标、名称,并打开此应用。

qq_40364278的博客 2070
上一篇: UsageStatsManager怎样使用问题详解和获取应用使用信息
下一篇: 控制虚拟按键的显示与隐藏
安卓鸟
博客等级 码龄15年 14粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值