为什么package / apps / Settings可以在不使用反射的情况下访问ConnectivityManager :: setMobileDataEnabled?

时间:2014-12-19 15:58:26

标签: java android reflection

在所有相关讨论中,人们提到get / setMobileDataEnabled是私有函数,需要使用反射来访问。例如,这一个How to tell if 'Mobile Network Data' is enabled or disabled (even when connected by WiFi)?

但是,我发现设置应用程序(package / apps / Settings / src / com / android / settings / DataUsageSummary.java)根本不使用反射。谁知道原因?

private ConnectivityManager mConnService;

mConnService = ConnectivityManager.from(context);

private void setMobileDataEnabled(boolean enabled) {
     if (LOGD) Log.d(TAG, "setMobileDataEnabled()");
     mConnService.setMobileDataEnabled(enabled);
     mMobileDataEnabled = enabled;
     updatePolicy(false);
}

1 个答案:

答案 0 :(得分:0)

“设置”应用程序是作为完整固件构建的一部分构建的。 “设置”应用不是Android SDK应用,因此不受Android SDK强加的限制,例如无法访问@hide类和方法。