【问题标题】:Detecting and changing programmatically data connection (GPRS/UMTS) on Android在 Android 上以编程方式检测和更改数据连接 (GPRS/UMTS)
【发布时间】:2010-06-14 09:43:01
【问题描述】:

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

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

【问题讨论】:

  • 不通过标准 Android Api 的 no
  • 我同意,但在问题中我提到了供应商特定设置。

标签: android gprs


【解决方案1】:

我没有 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 中添加数据连接小部件或类似的东西,那么:

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

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

【讨论】:

  • 我认为没有。这些东西是系统内部的。
  • 即使程序使用原生C接口?
  • 有什么区别?这是关于权限,而不是缺少 API。使用非特权 UID 无法做到这一点。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2011-02-27
    • 2017-06-25
    • 2014-04-17
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多