aboutsummaryrefslogtreecommitdiff
path: root/src/org/jivesoftware/smack/SmackAndroid.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/jivesoftware/smack/SmackAndroid.java')
-rw-r--r--src/org/jivesoftware/smack/SmackAndroid.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/org/jivesoftware/smack/SmackAndroid.java b/src/org/jivesoftware/smack/SmackAndroid.java
new file mode 100644
index 0000000..a18d675
--- /dev/null
+++ b/src/org/jivesoftware/smack/SmackAndroid.java
@@ -0,0 +1,59 @@
+package org.jivesoftware.smack;
+
+import org.jivesoftware.smack.util.DNSUtil;
+import org.jivesoftware.smack.util.dns.DNSJavaResolver;
+import org.jivesoftware.smackx.ConfigureProviderManager;
+import org.jivesoftware.smackx.InitStaticCode;
+import org.xbill.DNS.ResolverConfig;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+
+public class SmackAndroid {
+ private static SmackAndroid sSmackAndroid = null;
+
+ private BroadcastReceiver mConnectivityChangedReceiver;
+ private Context mCtx;
+
+ private SmackAndroid(Context ctx) {
+ mCtx = ctx;
+ DNSUtil.setDNSResolver(DNSJavaResolver.getInstance());
+ InitStaticCode.initStaticCode(ctx);
+ ConfigureProviderManager.configureProviderManager();
+ maybeRegisterReceiver();
+ }
+
+ public static SmackAndroid init(Context ctx) {
+ if (sSmackAndroid == null) {
+ sSmackAndroid = new SmackAndroid(ctx);
+ } else {
+ sSmackAndroid.maybeRegisterReceiver();
+ }
+ return sSmackAndroid;
+ }
+
+ public void onDestroy() {
+ if (mConnectivityChangedReceiver != null) {
+ mCtx.unregisterReceiver(mConnectivityChangedReceiver);
+ mConnectivityChangedReceiver = null;
+ }
+ }
+
+ private void maybeRegisterReceiver() {
+ if (mConnectivityChangedReceiver == null) {
+ mConnectivityChangedReceiver = new ConnectivtyChangedReceiver();
+ mCtx.registerReceiver(mConnectivityChangedReceiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
+ }
+ }
+
+ class ConnectivtyChangedReceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ ResolverConfig.refresh();
+ }
+
+ }
+}