可以在Android之外的Java应用程序中访问Android API吗?

可以在Android之外的Java应用程序中访问Android API吗?,android,android-service,Android,Android Service,我想在Android项目之外访问Android API类。例如,是否可以将对象获取到连接到机器或运行的仿真器的设备的上下文 这将允许在Android设备外部访问系统服务,如PowerManager或ActivityManager。如果不是通过上下文对象,是否有其他方式访问Android以外的设备/avd的系统服务?我非常怀疑这是可能的。分布式SDK类不包括内部API的许多部分。例如,请参见。此外,如果没有一个系统(或一个系统的仿真)来备份像PowerManager这样的系统服务对象,那又有什么用

我想在Android项目之外访问Android API类。例如,是否可以将对象获取到连接到机器或运行的仿真器的设备的
上下文


这将允许在Android设备外部访问系统服务,如
PowerManager
ActivityManager
。如果不是通过
上下文
对象,是否有其他方式访问Android以外的设备/avd的系统服务?

我非常怀疑这是可能的。分布式SDK类不包括内部API的许多部分。例如,请参见。此外,如果没有一个系统(或一个系统的仿真)来备份像PowerManager这样的系统服务对象,那又有什么用呢?

我非常怀疑这是可能的。分布式SDK类不包括内部API的许多部分。例如,请参见。此外,如果没有系统(或模拟系统)来备份像PowerManager这样的系统服务对象,那又有什么用呢?

不可能。分布式android API类仅仅是足够好的存根,可以针对它们进行编译。
即使是最无辜的东西也会在调用时抛出RuntimeException。如果您想知道系统的状态,就必须使用SDK工具。或者编写应用程序,通过一些远程访问技术公开android对象

不可能。分布式android API类仅仅是足够好的存根,可以针对它们进行编译。
即使是最无辜的东西也会在调用时抛出RuntimeException。如果您想知道系统的状态,就必须使用SDK工具。或者编写一个应用程序,通过一些远程访问技术公开android对象。听起来你想做的不是真正访问设备上的东西,而是远程控制设备。在这种情况下,您应该研究一些外部工具。这些工具主要集中于测试,并且基于应用程序的工具。首先,您可以看看robotium和monkeyrunner,因为它们提供了一些功能,可以帮助您实现您想要的。除此之外,你还可以做那些工具所做的事情,编写一个应用程序来监听来自adb的意图,根据这些意图执行操作,等等,但是你显然要在高层次上进行大量的沟通,所以这可能不是最有效的(我不确定您将如何传输大量数据,这对于真正的RPC是必需的,这听起来像是您想要做的).

听起来你想要做的不是真正访问设备上的东西,而是远程控制设备。在这种情况下,你应该研究一些外部工具。这些工具主要用于测试,并且基于应用程序的工具。你可以从robotium和monkeyrunner开始,如下所示除此之外,你还可以做那些工具所做的事情,编写一个应用程序来监听adb的意图,根据这些意图执行操作,等等,但是你显然要在高层次上进行大量沟通,所以这可能不是最有效的(我不确定您将如何传输大量数据,这对于真正的RPC是必需的,这听起来像是您想要做的).

这听起来更像是你试图远程控制Android设备,对吗?否则你为什么要这样做..某种程度上。也知道设备的状态并据此采取行动。这听起来更像是你试图远程控制Android设备,对吗?否则你为什么要这样做nt这..有点。也知道设备的状态,并根据状态采取行动。首先,系统服务对象对于正在运行的系统是必需的(连接的设备或正在运行的avd)。其次,它将有助于了解实际系统之外的设备/仿真器系统的状态。@wowamit-我认为您最好编写一个向外部连接公开特定功能的服务(例如,手机上托管的web服务)。您不能编写直接链接到Android API中类的Java桌面程序。谢谢!看起来远程通信是唯一的方法。尽管我们希望至少使用与Android范围外的系统状态相关的对象。首先,系统运行时需要system service对象(已连接的设备或正在运行的avd)。其次,它将有助于了解实际系统之外的设备/仿真器系统的状态。@wowamit-我认为您最好编写一个向外部连接公开特定功能的服务(例如,手机上托管的web服务)。您不能编写直接链接到Android API中类的Java桌面程序。谢谢!看起来远程通信是唯一的方式。虽然我们希望至少使用与Android范围外的系统状态相关的对象。好的。SDK工具是一种按原样使用的方式,我真的希望根据应用程序的状态执行一些操作设备。我想我必须让设备上有东西,并让它在外部远程通信。我评估的另一种方法是使用adb。但是我不确定是否所有事情都是可能的,例如查找正在运行的进程。你可以从adb获得从shell获得的所有东西。运行ps是可能的。我认为adb的来源是有用的able-看看它使用的是什么协议。好的。SDK工具是一种按原样使用的方式,我真的很想根据设备的状态采取一些行动。我想我必须让设备上有东西,并让它在外部远程通信。我评估的另一种方式是使用adb。但是,我不确定是否所有事情都是可能的,因为例如,查找正在运行的进程。您可以从adb获得从shell获得的所有信息。运行ps是可能的。