android - 使用 Android 应用更改网络运营商

标签 android networking operator-keyword

我正在尝试开发一款 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/

相关文章:

java - Android 无法在表面 View 中切换到前置摄像头

android - 如何在 Android 上重新连接当前处于 sleep 模式的 WiFi

android - Android 上的假鼠标和键盘输入

linux - 为什么 linux 路由配置在两个 NIC 冗余(主/辅)时失败?

sockets - Azure VM - 无法连接到监听特定端口的 TCP 服务器

C++ 运算符附加类声明

Android 在系统内存不足时杀死广播接收器

java - 在java中使用socket填充html表单

c++ - 没有从 'int' 到 'Student' 的可行转换

c - 赋值运算符的重新定义