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

发布于 2024-11-06 12:06:48 字数 130 浏览 1 评论 0原文

我正在尝试开发一个Android应用程序,它在地图上显示各个网络运营商的信号强度。问题是改变网络运营商的唯一方法是手动操作。

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

I'm trying to develop an Android App which shows the signal strength of various network operators on a map. The problem is that the only way to change the network operator is by doing it by hand.

Any ideas on how I can get this information without changing it manually? I think that there are internal/private Android classes to do this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甚是思念 2024-11-13 12:06:48

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

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

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

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

You will need to use one or more of Google's internal APIs to do this. They are not, by default, available to Android applications for various (usually good) reasons. The API for turning tethering on and off and configuring it, for example, is not a public API and cannot be invoked directly by third party applications.

You will need to do two things. First, download the Android source code and find the API(s) you need to list and switch carrier. You can find the Android source code, and download instructions, here.

Second, you will need to use reflection to invoke the methods on those APIs. The best approach to this, and one I used myself to play with the tethering API, is to write a proxy class. Give it all the same methods as the API you want to use, and inside each method use reflection to invoke the API method. Any other technique will either (a) not compile without adding portions of the Android source code to your classpath and then (b) will compile but blow up when you deploy.

Be aware that you're best doing this on a Nexus branded device as this has the vanilla Android code on it. My (successful) attempt to write a home screen widget to turn tethering on and off worked on a Nexus One but did not work on a Samsung Galaxy Tab P1000. The device supported tethering, but Samsung had modified that part of the OS as part of their porting effort.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文