代码之家  ›  专栏  ›  技术社区  ›  lornova

在Android上检测和更改编程数据连接(GPRS/UMTS)

  •  5
  • lornova  · 技术社区  · 14 年前

    我知道很遗憾,在普通安卓系统上无法检测和更改以编程方式进行的数据连接(GPRS/UMTS),常见的解决方法是编辑APN设置。这不是一个好的解决办法。

    但是,在我的设备(Xperia x10)上,我在“数据漫游”附近有一个附加设置,允许启用或禁用彩信和数据。我想这是索尼爱立信的个性化产品,也许其他厂商也有类似的产品。是否有访问此设置的方法?

    2 回复  |  直到 14 年前
        1
  •  5
  •   broot    14 年前

    我没有SE电话,但我已经查看了它的系统转储和:

    • 在AOSP源中,com.android.internal.telephony接口中有两种内部方法:enabledDataConnectivity()和disableDataConnectivity()。这个接口及其实现是系统的一部分。
    • 作为phone.apk应用程序的一部分,com.android.phone.phoneInterfaceManager中还有两种方法的名称与上述方法相同。这些方法只是调用上面的/系统的方法。
    • Sony修改了com.android.phone.phoneInterfaceManager.enabledDataConnectivity(),因此它会额外检查sharedPreferences中存储的布尔值。如果为false,则enabledDataConnectivity()方法始终调用com.android.internal.telephony的disableDataConnectivity()。
    • 当然,这个布尔值是通过首选项屏幕控制的:“彩信和数据”。它存储在“com.android.phone_preferences”首选项容器中,pref键是:“data_service_key”。此外,当您切换此复选框时,“设置”活动会自动从com.android.internal.telephony调用方法以立即切换数据状态。

    如果您想将数据连接小部件或类似的东西添加到您的ROM中,那么:

    • 你需要根。
    • 您需要“android.uid.phone”sharedUserID才能访问上述设置。

    我认为最好修改phone.apk,这样它会捕捉到启用/禁用数据的特殊意图。它将设置data_service_key boolean并调用com.android.internal.telephony中的一个方法。这应该是很容易做的事情,然后你将能够创建小部件,应用程序和其他东西非常容易-他们会使用这个特殊的意图。

        2
  •  1
  •   omermuhammed    14 年前

    你看过吗 SE developer zone ?我发现它很有用。