android获取当前界面activity对象

在编写android应用的时候一般跟界面相关的都离不开activity,很多时候我们需要在纯java环境中使用activity对象,一般情况下我们都是靠参数传递去使用。现在我们可以使用纯java代码来获取当前系统中的activity对象,有了activity对象我们就可以做很多想做的事情,比如监听改activity的生命周期,给改activity界面添加浮动view等等。废话少说看下面方法:

	public static Activity getGlobleActivity() throws ClassNotFoundException, IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, NoSuchFieldException{
        Class activityThreadClass = Class.forName("android.app.ActivityThread");
        Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);
        Field activitiesField = activityThreadClass.getDeclaredField("mActivities");
        activitiesField.setAccessible(true);
        Map activities = (Map) activitiesField.get(activityThread);
        for(Object activityRecord:activities.values()){
            Class activityRecordClass = activityRecord.getClass();
            Field pausedField = activityRecordClass.getDeclaredField("paused");
            pausedField.setAccessible(true);
            if(!pausedField.getBoolean(activityRecord)) {
                Field activityField = activityRecordClass.getDeclaredField("activity");
                activityField.setAccessible(true);
                Activity activity = (Activity) activityField.get(activityRecord);
                return activity;
            }
        }
        return null;
      }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 13:48:16

android获取当前界面activity对象的相关文章

android 获取application和activity下meta-data中的值

meta-data在AndroidManifest中是以键值对的形式存在的,可以将meta-data放在application根节点下,也可以放在某个activity节点下.因为存放的位置不同,因此获取value时也要使用对应的方法,下面是我写的一个小测试. 代码如下: 先是在AndroidManifest中的application和mainActivity下添加两个meta-data属性. <application android:allowBackup="true" andr

android获取当前运行Activity的名字(解决避免及时聊天再出现通知)

最近在做IM时需要知道当前Activity是哪一个Activity.自己整理一下两种方法 第一种:要方便一点 private String getRunningActivityName() { String contextString = context.toString(); return contextString.substring(contextString.lastIndexOf(".") + 1, contextString.indexOf("@"));

[android] 开启新的activity获取他的返回值

应用场景:打开一个新的activity,在这个activity上获取数据,返回给打开它的界面 短信发送时,可以直接选择系统联系人 界面布局是一个线性布局,里面右侧选择联系人在EditText的右上,因此使用相对布局对输入框进行包裹,按钮使用android:layout_alignParentRight=”true”处理 下面的内容有多行,使用 属性android:inputType=”textMultiLine” 属性android:minLines=”5” 我们使用hvg的屏幕进行预览 打开一

Android获取LayoutInflater对象的方法总结

在写Android程序时,有时候会编写自定义的View,使用Inflater对象来将布局文件解析成一个View.本文主要目的是总结获取LayoutInflater对象的方法. 1.若能获取context对象,可以有以下几种方法: LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View child = inflater.inflate(R.la

appium实践问题记录--如何获取android中应用的activity名称

背景: 工作中需要通过appium来制作android的自动化功能用例 问题: QQ的apk是被加密的,直接apktool反编译时xml文件中会被截断.无法获取启动的activity名称: 问题解决方法: 通过观察log的方法: 步骤: 开启日志输出:adb logcat>D:/log.txt 启动待测apk,打开界面(即打开QQ界面) 关闭日志输出:ctrl+c 查看日志,按照com.tencent.mobileqq关键字可找出最后步骤中所启动的activity:

Android四大组件之Activity详解——传值和获取结果

废话不多说,先来看效果图 项目源码: http://download.csdn.net/detail/ginodung/8331535 程序说明: 在MainActivity中输入用户名和密码,然后提交到SecondActivity 在SecondActivity中获取提交的数据,通过Toast显示该数据 在SecondActivity设置新的用户名和密码,然后返回给MainActivity MainActivity获取到SecondActivity返回的数据后从新设置用户名和密码的值,然后用T

Android tabhost下的activity怎样获取传来的值

android tabhost下的activity怎样获取传来的值,具体解决方案如下: 解决方案: 其他activity设置intent:Intent intent=new Intent(); intent.putExtra("键",值);//intent键值对传的值 intent.setClass(FromActivity.this,TabHostActivity.class); FromActivity.this.startActivity(intent);tabhostactic

【转】Android应用程序窗口(Activity)窗口对象(Window)创建指南

在前文中,我们分析了Android应用程序窗口的运行上下文环境的创建过程.由此可知,每一个Activity组件都有一个关联的ContextImpl对象,同时,它还关联有一个Window对象,用来描述一个具体的应用程序窗口.由此又可知,Activity只不过是一个高度抽象的UI组件,它的具体UI实现其实是由其它的一系列对象来实现的.在本文中,我们就将详细分析Android应用程序窗口对象的创建过程. 从前面Android应用程序窗口(Activity)实现框架简要介绍和学习计划一文可以知道,在PH

NX二次开发-UFUN获取显示在NX交互界面的对象UF_OBJ_is_displayable

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_disp.h> 5 #include <uf_obj.h> 6 #include <uf_part.h> 7 8 UF_initialize(); 9 10 //遍历当前显示部件 11 tag_t NextTag = NULL_TAG; 12 int Type1, SubType1; 13 do 14 { 15 NextTag = UF_OBJ_cycle_all