有時在開發 Android app 時,可能會想使用非公開的 API (就是有註解為 @hide),這時候可以使用 Java 的 Reflection 機制來達成。本文並不討論此機制的原理,有興趣的網友可以自行 GOOGLE 。 在 Android 要使用 Reflection 機制有兩項前提,分別是: 1. 必須要知道要使用的 API 其完整 class name 及 method name,class name 要包含 package name 2. 使用此 API 所需的 permission ( 加在 AndroidManifest 的) 其實上述這兩點只要看 source code 就可以知道了,而網路上都有 source code 可以看,所以應該不是什麼大問題… 底下是一個簡單的範例: WifiManager wifiMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wifiConfig = null; try { Class WifiMgrClz = Class.forName(WifiManager.class.getName()); Method getWifiApCOnfiguration = WifiMgrClz.getMethod("getWifiApConfiguration"); wifiConfig = (WifiConfiguration) getWifiApCOnfiguration.invoke(wifiMgr); Class[] paramOfClass = new Class[2]; paramOfClass[0] = WifiConfiguration.class; paramOfClass[1] = Boolean.TYPE; Method setWifiApEnabled = WifiMgr...