blob: a18d67509c29660f7db61e5074416b3ff1f4b20f [file] [log] [blame]
Shuyi Chend7955ce2013-05-22 14:51:55 -07001package org.jivesoftware.smack;
2
3import org.jivesoftware.smack.util.DNSUtil;
4import org.jivesoftware.smack.util.dns.DNSJavaResolver;
5import org.jivesoftware.smackx.ConfigureProviderManager;
6import org.jivesoftware.smackx.InitStaticCode;
7import org.xbill.DNS.ResolverConfig;
8
9import android.content.BroadcastReceiver;
10import android.content.Context;
11import android.content.Intent;
12import android.content.IntentFilter;
13
14public class SmackAndroid {
15 private static SmackAndroid sSmackAndroid = null;
16
17 private BroadcastReceiver mConnectivityChangedReceiver;
18 private Context mCtx;
19
20 private SmackAndroid(Context ctx) {
21 mCtx = ctx;
22 DNSUtil.setDNSResolver(DNSJavaResolver.getInstance());
23 InitStaticCode.initStaticCode(ctx);
24 ConfigureProviderManager.configureProviderManager();
25 maybeRegisterReceiver();
26 }
27
28 public static SmackAndroid init(Context ctx) {
29 if (sSmackAndroid == null) {
30 sSmackAndroid = new SmackAndroid(ctx);
31 } else {
32 sSmackAndroid.maybeRegisterReceiver();
33 }
34 return sSmackAndroid;
35 }
36
37 public void onDestroy() {
38 if (mConnectivityChangedReceiver != null) {
39 mCtx.unregisterReceiver(mConnectivityChangedReceiver);
40 mConnectivityChangedReceiver = null;
41 }
42 }
43
44 private void maybeRegisterReceiver() {
45 if (mConnectivityChangedReceiver == null) {
46 mConnectivityChangedReceiver = new ConnectivtyChangedReceiver();
47 mCtx.registerReceiver(mConnectivityChangedReceiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
48 }
49 }
50
51 class ConnectivtyChangedReceiver extends BroadcastReceiver {
52
53 @Override
54 public void onReceive(Context context, Intent intent) {
55 ResolverConfig.refresh();
56 }
57
58 }
59}