diff --git a/api/net/sf/briar/api/plugins/Plugin.java b/api/net/sf/briar/api/plugins/Plugin.java
index f34fd4b6d422e85b910bfffc6e128295b09dcb7d..3358c1ff6a31ee1c7e37310c3df57cb73f90c3bf 100644
--- a/api/net/sf/briar/api/plugins/Plugin.java
+++ b/api/net/sf/briar/api/plugins/Plugin.java
@@ -33,4 +33,7 @@ public interface Plugin {
 	 * callback.
 	 */
 	void poll();
+
+	/** Returns true if the plugin supports exchanging invitations. */
+	boolean supportsInvitations();
 }
diff --git a/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
index 78b9c648a8726c40ea6b8f8a6117b4bb7bd0c7ff..d1efb602e7fee235fe02a316a952b2a26fedf7a1 100644
--- a/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
+++ b/components/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java
@@ -264,6 +264,10 @@ class BluetoothPlugin extends AbstractPlugin implements StreamPlugin {
 		return url == null ? null : connect(c, url);
 	}
 
+	public boolean supportsInvitations() {
+		return true;
+	}
+
 	public StreamTransportConnection sendInvitation(int code, long timeout) {
 		return createInvitationConnection(code, timeout);
 	}
diff --git a/components/net/sf/briar/plugins/file/RemovableDrivePlugin.java b/components/net/sf/briar/plugins/file/RemovableDrivePlugin.java
index 9a2633fdc9716cdb76ac96434a8cfd83f7a362f2..64a6763d43ff632e666c09bb5ee321f649bd72fa 100644
--- a/components/net/sf/briar/plugins/file/RemovableDrivePlugin.java
+++ b/components/net/sf/briar/plugins/file/RemovableDrivePlugin.java
@@ -59,6 +59,10 @@ implements RemovableDriveMonitor.Callback {
 		throw new UnsupportedOperationException();
 	}
 
+	public boolean supportsInvitations() {
+		return true;
+	}
+
 	@Override
 	protected File chooseOutputDirectory() {
 		try {
diff --git a/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java b/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
index 09d2e96fb9add3f858325f4f3527fe692560cf6b..8daeb54cb03e587f97006d04f5906cf3121f8ce2 100644
--- a/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
+++ b/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
@@ -97,13 +97,15 @@ class SimpleSocketPlugin extends SocketPlugin {
 		callback.setLocalProperties(p);
 	}
 
+	public boolean supportsInvitations() {
+		return false;
+	}
+
 	public StreamTransportConnection sendInvitation(int code, long timeout) {
-		// FIXME
-		return null;
+		throw new UnsupportedOperationException();
 	}
 
 	public StreamTransportConnection acceptInvitation(int code, long timeout) {
-		// FIXME
-		return null;
+		throw new UnsupportedOperationException();
 	}
 }