Android反射で1つのメソッドを取得する(メソッドのパラメータが異なる)

3835 ワード


 
        private Method forget;
        private Method connect_netID;
        private Method connect_wifiConfig;
        private Method save;

        public Compatimpl17() {
            try {
                Class ActionListener = Class.forName("android.net.wifi.WifiManager$ActionListener", false, null);
                connect_netID = WifiManager.class.getDeclaredMethod("connect", int.class, ActionListener);
                connect_wifiConfig = WifiManager.class.getDeclaredMethod("connect", WifiConfiguration.class, ActionListener);
                forget = WifiManager.class.getDeclaredMethod("forget", int.class, ActionListener);
                save = WifiManager.class.getDeclaredMethod("save", WifiConfiguration.class, ActionListener);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }
     
        public boolean connect(int networkId) {
            try {
                connect_netID.invoke(getManager(), networkId, null);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }