如何获取屏幕上正显示的activity

如何获取屏幕上正显示的activity?
       用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。
         那么,从里面我们可以发掘点什么出来吗?
         仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。
          getRunningTasks有个整型参数,表示返回列表的最大个数。那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。

Java代码   收藏代码
  1. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);  
  2. ComponentName cn = am.getRunningTasks(1).get(0).topActivity;  
  3. Log.d("""pkg:"+cn.getPackageName());  
  4. Log.d("""cls:"+cn.getClassName());   
       至于这个能做什么,嘿嘿,我相信你知道的。

如何判断一个activity是否存在于系统中?
已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通过intent就行。
Java代码   收藏代码
  1. Intent intent = new Intent();  
  2. intent.setClassName("包名""类名");        
  3. if(getPackageManager().resolveActivity(intent, 0) == null) {  
  4.     //说明系统中不存在这个activity  
  5. }  
如何让应用程序动态全屏和退出全屏?
    让程序全屏的方法,大家都知道,那是静态的,程序运行之初就申明了。但是如果有这样的需求:要在程序运行的过程中,执行了某个操作而使之全屏,然后还需要退出全屏,怎么做?
    如下:
Java代码   收藏代码
  1. WindowManager.LayoutParams attrs = getWindow().getAttributes();  
  2. attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;  
  3. getWindow().setAttributes(attrs);  
  4. getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);  
    修改window的LayoutParams参数,然后加上FLAG_LAYOUT_NO_LIMITS标志,就OK了。window会自动重新布局,呈现全屏的状态。
    要退出全屏,只需要清除刚才加上的FLAG_FULLSCREEN参数,然后去掉FLAG_LAYOUT_NO_LIMITS标志。
    如下:
Java代码   收藏代码
  1. WindowManager.LayoutParams attrs = getWindow().getAttributes();  
  2. attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  3. getWindow().setAttributes(attrs);  
  4. getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值