Android: Fix the bearer management plugin when running as a service

Since Qt for Android now supports running as a service, we shouldn't
use the activity context unconditionally, but instead query the current
context from QtAndroidPrivate::context().

Change-Id: Ib793ba890fdbfc0cfe7b20115e41ff64cc73477a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
bb10
Christian Strømme 2016-12-13 15:28:55 +01:00 committed by Christian Stromme
parent 1f665efa91
commit 87e553b58a
2 changed files with 12 additions and 13 deletions

View File

@ -44,7 +44,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.app.Activity;
import android.net.ConnectivityManager;
public class QtNetworkReceiver
@ -65,29 +64,29 @@ public class QtNetworkReceiver
private QtNetworkReceiver() {}
public static void registerReceiver(final Activity activity)
public static void registerReceiver(final Context context)
{
synchronized (m_lock) {
if (m_broadcastReceiver == null) {
m_broadcastReceiver = new BroadcastReceiverPrivate();
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
activity.registerReceiver(m_broadcastReceiver, intentFilter);
context.registerReceiver(m_broadcastReceiver, intentFilter);
}
}
}
public static void unregisterReceiver(final Activity activity)
public static void unregisterReceiver(final Context context)
{
synchronized (m_lock) {
if (m_broadcastReceiver == null)
return;
activity.unregisterReceiver(m_broadcastReceiver);
context.unregisterReceiver(m_broadcastReceiver);
}
}
public static ConnectivityManager getConnectivityManager(final Activity activity)
public static ConnectivityManager getConnectivityManager(final Context context)
{
return (ConnectivityManager)activity.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
return (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}

View File

@ -250,15 +250,15 @@ AndroidConnectivityManager::AndroidConnectivityManager()
m_connectivityManager = QJNIObjectPrivate::callStaticObjectMethod(networkReceiverClass,
"getConnectivityManager",
"(Landroid/app/Activity;)Landroid/net/ConnectivityManager;",
QtAndroidPrivate::activity());
"(Landroid/content/Context;)Landroid/net/ConnectivityManager;",
QtAndroidPrivate::context());
if (!m_connectivityManager.isValid())
return;
QJNIObjectPrivate::callStaticMethod<void>(networkReceiverClass,
"registerReceiver",
"(Landroid/app/Activity;)V",
QtAndroidPrivate::activity());
"(Landroid/content/Context;)V",
QtAndroidPrivate::context());
}
AndroidConnectivityManager *AndroidConnectivityManager::getInstance()
@ -272,8 +272,8 @@ AndroidConnectivityManager::~AndroidConnectivityManager()
{
QJNIObjectPrivate::callStaticMethod<void>(networkReceiverClass,
"unregisterReceiver",
"(Landroid/app/Activity;)V",
QtAndroidPrivate::activity());
"(Landroid/content/Context;)V",
QtAndroidPrivate::context());
}
AndroidNetworkInfo AndroidConnectivityManager::getActiveNetworkInfo() const