我正在尝试开发一款 Android 应用程序,它可以在 map 上显示各种网络运营商的信号强度。问题在于,更改网络运营商的唯一方法是手动操作。
关于如何在不手动更改的情况下获取此信息的任何想法?我认为有内部/私有(private) Android 类可以执行此操作。
最佳答案
您需要使用一个或多个 Google 的内部 API 来执行此操作。默认情况下,出于各种(通常是好的)原因,Android 应用程序无法使用它们。例如,用于打开和关闭网络共享以及对其进行配置的 API 不是公共(public) API,不能由第三方应用程序直接调用。
您需要做两件事。首先,下载 Android 源代码并找到列出和切换运营商所需的 API。您可以找到 Android 源代码和下载说明,here .
其次,您需要使用反射来调用这些 API 上的方法。最好的方法,也是我自己使用网络共享 API 的方法,是编写一个代理类。为它提供与您要使用的 API 相同的所有方法,并在每个方法内部使用反射来调用 API 方法。任何其他技术要么 (a) 在不将部分 Android 源代码添加到类路径的情况下无法编译,然后 (b) 会编译但在部署时崩溃。
请注意,您最好在 Nexus 品牌设备上执行此操作,因为它上面有原始 Android 代码。我(成功)尝试编写一个主屏幕小部件来打开和关闭网络共享在 Nexus One 上运行但在 Samsung Galaxy Tab P1000 上不起作用。该设备支持网络共享,但作为移植工作的一部分,三星修改了操作系统的这一部分。
关于android - 使用 Android 应用更改网络运营商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976440/