android获取栈顶Activity包名、类名 + 执行其他包的方法

获取栈顶Activity包名、类名;执行其他包的方法

private void getTopActivity(LocalService localService) {

ActivityManager manager = (ActivityManager) localService;
.getSystemService(ACTIVITY_SERVICE);
List runningTaskInfos = manager.getRunningTasks(1);

if (runningTaskInfos != null) {
ComponentName cn = runningTaskInfos.get(0).topActivity;
Log.d(TAG, "pkg:" + cn.getPackageName());//包名
Log.d(TAG, "cls:" + cn.getClassName());//类名

try {
Context c = createPackageContext(cn.getPackageName(),
Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
// 载入这个类
Class clazz = c.getClassLoader().loadClass(cn.getClassName());
// 新建一个实例
Object owner = clazz.newInstance();
// 获取print方法,传入参数并执行
Object obj = clazz.getMethod("print", String.class)
.invoke(owner, "Hello");
} catch (NameNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
} else {
}
}

相关文档
最新文档