5

我知道不幸的是,无法在 vanilla Android 上以编程方式检测和更改数据连接 (GPRS/UMTS),常见的解决方法是编辑 APN 设置。这几乎不是一个好的解决方案。

但是在我的设备(Xperia X10)上,我在“数据漫游”附近有一个附加设置,允许启用或禁用彩信和数据。我想这是索尼爱立信的个性化,甚至可能其他供应商也有类似的东西。有没有办法访问这个设置?

4

2 回答 2

5

我没有 SE 手机,但我查看了它的系统转储并:

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

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

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

我认为最好修改Phone.apk,这样它会捕捉到启用/禁用数据的特殊意图。它将设置 data_service_key 布尔值并调用来自 com.android.internal.telephony 的方法之一。这应该很容易做到,然后您将能够非常轻松地创建小部件、应用程序和其他东西 - 他们会使用这种特殊意图。

于 2010-09-16T01:46:59.833 回答
1

你看过SE 开发者专区吗?我发现它非常有用。

于 2010-09-14T06:35:58.790 回答