コード例 #1
0
ファイル: ExtentCenter.cs プロジェクト: kxlcn/android-weixin
 public static bool installPlugin(PluginBase plugin, InstallMode mode = 0)
 {
     if (!PluginBase.isValidPlugin(plugin))
     {
         return(false);
     }
     if (PluginBase.isInstalledPlugin(plugin))
     {
         return(false);
     }
     Log.i("ExtentCenter", string.Concat(new object[] { "install plugin... ", plugin.mName, ", install mode =", mode }));
     plugin.onInstalled(mode);
     plugin.mMetaInfo.isInstalled = true;
     PluginMetaStorage.updateMetaInfo(plugin);
     if ((mode == InstallMode.UserInstall) && (plugin.mProtocolPluginFlag != ((EPluginFlag)0)))
     {
         Account acc = AccountMgr.getCurAccount();
         acc.nPluginFlag = (uint)(((EPluginFlag)acc.nPluginFlag) & ~plugin.mProtocolPluginFlag);
         AccountMgr.updateAccount();
         //OpLogMgr.opModUserInfo(0x800, acc);
         ServiceCenter.sceneNewSync.doScene(7, syncScene.MM_NEWSYNC_SCENE_OTHER);
     }
     initializePlugin(plugin);
     return(true);
 }
コード例 #2
0
ファイル: ExtentCenter.cs プロジェクト: kxlcn/android-weixin
 public static bool registerPlugin(PluginBase plugin)
 {
     if (plugin == null)
     {
         return(false);
     }
     if (!PluginBase.isValidPlugin(plugin))
     {
         Log.i("ExtentCenter", "register plugin... " + plugin.mName);
         plugin.onRegisterResult(RetConst.MM_OK, 0);
         plugin.mMetaInfo.isRegistered = true;
         PluginMetaStorage.updateMetaInfo(plugin);
     }
     return(true);
 }
コード例 #3
0
ファイル: ExtentCenter.cs プロジェクト: kxlcn/android-weixin
 public static bool unregisterPlugin(PluginBase plugin)
 {
     if (plugin == null)
     {
         return(false);
     }
     if (PluginBase.isValidPlugin(plugin))
     {
         Log.i("ExtentCenter", "unregister plugin... " + plugin.mName);
         if (plugin.isInstalledPlugin())
         {
             plugin.onUninstalled(InstallMode.DefaultInstall);
             plugin.mMetaInfo.isInstalled = false;
         }
         plugin.onUnRegisterResult(RetConst.MM_OK, 0);
         plugin.mMetaInfo.isRegistered = false;
         PluginMetaStorage.updateMetaInfo(plugin);
     }
     return(true);
 }
コード例 #4
0
ファイル: PluginLoader.cs プロジェクト: kxlcn/android-weixin
        public static bool preLoadPlugin(string className)
        {
            string typeName = "MicroMsg.Plugin." + className + "." + className;
            Type   type     = Type.GetType(typeName);

            if (type == null)
            {
                Log.e("PluginLoader", "Not found class, name =  " + typeName);
                return(false);
            }
            Type c = typeof(PluginBase);

            if (!type.IsSubclassOf(c))
            {
                Log.e("PluginLoader", "Not a plugin class, name = " + typeName);
                return(false);
            }
            PluginBase plug = Activator.CreateInstance(type) as PluginBase;

            if (plug == null)
            {
                Log.e("PluginLoader", "Failed to create instance, name = " + typeName);
                return(false);
            }
            if (!plug.mEnabled)
            {
                Log.e("PluginLoader", "Plugin disabled, name = " + typeName);
                return(false);
            }
            Account account = AccountMgr.getCurAccount();

            if (!PluginMetaStorage.restoreMetaInfo(plug))
            {
                Log.i("PluginLoader", "First load plugin, name = " + typeName);
                if (!ExtentCenter.registerPlugin(plug))
                {
                    Log.e("PluginLoader", "Not pass to register plugin, name = " + typeName);
                    return(false);
                }
                if (plug.mProtocolPluginFlag != ((EPluginFlag)0))
                {
                    if ((((EPluginFlag)account.nPluginFlag) & plug.mProtocolPluginFlag) == ((EPluginFlag)0))
                    {
                        ExtentCenter.installPlugin(plug, InstallMode.DefaultInstall);
                    }
                }
                else if (plug.mDefaultInstalled)
                {
                    ExtentCenter.installPlugin(plug, InstallMode.DefaultInstall);
                }
            }
            else
            {
                Log.i("PluginLoader", "Restore plugin completed, name = " + typeName);
                if (!PluginBase.isValidPlugin(plug))
                {
                    Log.e("PluginLoader", "Ignored invalid plugin , name = " + typeName);
                    return(false);
                }
                ExtentCenter.initializePlugin(plug);
                ExtentCenter.syncPluginInstall(plug, account.nPluginFlag);
            }
            PluginManager.addPlugin(plug);
            return(true);
        }
コード例 #5
0
ファイル: ExtentCenter.cs プロジェクト: kxlcn/android-weixin
 private static void onAccountLoginProc(EventWatcher watcher, BaseEventArgs evtArgs)
 {
     PluginMetaStorage.loadMetaFromXML();
     PluginLoader.scanAvailablePluginList();
 }