1 /** 2 * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 3 * you may not use this file except in compliance with the License. 4 * You may obtain a copy of the License at 5 * 6 * http://www.apache.org/licenses/LICENSE-2.0 7 * 8 * Unless required by applicable law or agreed to in writing, software 9 * distributed under the License is distributed on an "AS IS" BASIS, 10 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 * See the License for the specific language governing permissions and 12 * limitations under the License. 13 */ 14 15 package org.jivesoftware.smackx; 16 17 import android.content.Context; 18 19 /** 20 * Since dalvik on Android does not allow the loading of META-INF files from the 21 * filesystem, the static blocks of some classes have to be inited manually. 22 * 23 * The full list can be found here: 24 * http://fisheye.igniterealtime.org/browse/smack/trunk/build/resources/META-INF/smack-config.xml?hb=true 25 * 26 * @author Florian Schmaus fschmaus (at) gmail.com 27 * 28 */ 29 public class InitStaticCode { 30 31 public static void initStaticCode(Context ctx) { 32 // This has the be the application class loader, 33 // *not* the system class loader 34 ClassLoader appClassLoader = ctx.getClassLoader(); 35 36 try { 37 Class.forName(org.jivesoftware.smackx.ServiceDiscoveryManager.class.getName(), true, appClassLoader); 38 Class.forName(org.jivesoftware.smack.PrivacyListManager.class.getName(), true, appClassLoader); 39 Class.forName(org.jivesoftware.smackx.XHTMLManager.class.getName(), true, appClassLoader); 40 Class.forName(org.jivesoftware.smackx.muc.MultiUserChat.class.getName(), true, appClassLoader); 41 Class.forName(org.jivesoftware.smackx.bytestreams.ibb.InBandBytestreamManager.class.getName(), true, appClassLoader); 42 Class.forName(org.jivesoftware.smackx.bytestreams.socks5.Socks5BytestreamManager.class.getName(), true, appClassLoader); 43 Class.forName(org.jivesoftware.smackx.filetransfer.FileTransferManager.class.getName(), true, appClassLoader); 44 Class.forName(org.jivesoftware.smackx.LastActivityManager.class.getName(), true, appClassLoader); 45 Class.forName(org.jivesoftware.smack.ReconnectionManager.class.getName(), true, appClassLoader); 46 Class.forName(org.jivesoftware.smackx.commands.AdHocCommandManager.class.getName(), true, appClassLoader); 47 } catch (ClassNotFoundException e) { 48 throw new IllegalStateException("Could not init static class blocks", e); 49 } 50 } 51 } 52