使用Android应用程序更改网络运营商

sga*_*ski 6 networking android operator-keyword

我正在尝试开发一个Android应用程序,它可以在地图上显示各种网络运营商的信号强度.问题是改变网络运营商的唯一方法是手工完成.

关于如何在不手动更改信息的情况下获取此信息的任何想法?我认为有内部/私人Android类可以做到这一点.

Phi*_*hil 1

您将需要使用一个或多个 Google 内部 API 来执行此操作。默认情况下,由于各种(通常是好的)原因,它们不可用于 Android 应用程序。例如,用于打开和关闭网络共享以及对其进行配置的 API 不是公共 API,不能由第三方应用程序直接调用。

您需要做两件事。首先,下载 Android 源代码并找到列出和切换运营商所需的 API。您可以在此处找到 Android 源代码和下载说明。

其次,您需要使用反射来调用这些 API 上的方法。对此的最佳方法(也是我自己使用网络共享 API 所使用的方法)是编写一个代理类。为它提供与您要使用的 API 相同的方法,并在每个方法内部使用反射来调用 API 方法。任何其他技术要么 (a) 在不将部分 Android 源代码添加到类路径的情况下无法编译,然后 (b) 将编译但在部署时崩溃。

请注意,您最好在 Nexus 品牌设备上执行此操作,因为该设备上有原始 Android 代码。我(成功)尝试编写一个主屏幕小部件来打开和关闭网络共享,这在 Nexus One 上有效,但在 Samsung Galaxy Tab P1000 上不起作用。该设备支持网络共享,但作为移植工作的一部分,三星修改了操作系统的这一部分。