diff --git a/play-services-core/src/main/kotlin/com/google/android/gms/wearable/consent/TermsOfServiceActivity.kt b/play-services-core/src/main/kotlin/com/google/android/gms/wearable/consent/TermsOfServiceActivity.kt index 83246ba405..ee3eceee9b 100644 --- a/play-services-core/src/main/kotlin/com/google/android/gms/wearable/consent/TermsOfServiceActivity.kt +++ b/play-services-core/src/main/kotlin/com/google/android/gms/wearable/consent/TermsOfServiceActivity.kt @@ -12,7 +12,8 @@ class TermsOfServiceActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setResult(RESULT_CANCELED) + // microG does not require the user to accept a Terms of Service to pair a WearOS device. + setResult(RESULT_OK) finish() } } \ No newline at end of file diff --git a/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java index 1f0ed12669..db7a6de071 100644 --- a/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java +++ b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java @@ -198,12 +198,16 @@ public synchronized ConnectionConfiguration[] getConfigurations() { if (configurations == null) { configurations = configDatabase.getAllConfigurations(); } + if (configurations == null) { + configurations = new ConnectionConfiguration[0]; + } if (configurationsUpdated) { configurationsUpdated = false; ConnectionConfiguration[] newConfigurations = configDatabase.getAllConfigurations(); + if (newConfigurations == null) newConfigurations = new ConnectionConfiguration[0]; for (ConnectionConfiguration configuration : configurations) { for (ConnectionConfiguration newConfiguration : newConfigurations) { - if (newConfiguration.name.equals(configuration.name)) { + if (newConfiguration.name != null && newConfiguration.name.equals(configuration.name)) { newConfiguration.connected = configuration.connected; newConfiguration.peerNodeId = configuration.peerNodeId; newConfiguration.nodeId = configuration.nodeId; @@ -339,8 +343,8 @@ public void handleFilePiece(WearableConnection connection, String fileName, byte public void onConnectReceived(WearableConnection connection, String nodeId, Connect connect) { for (ConnectionConfiguration config : getConfigurations()) { - if (config.nodeId.equals(nodeId)) { - if (config.nodeId != nodeId) { + if (nodeId != null && nodeId.equals(config.nodeId)) { + if (connect.id != null && !connect.id.equals(config.nodeId)) { config.nodeId = connect.id; configDatabase.putConfiguration(config, nodeId); } @@ -375,7 +379,7 @@ public void onConnectReceived(WearableConnection connection, String nodeId, Conn public void onDisconnectReceived(WearableConnection connection, Connect connect) { for (ConnectionConfiguration config : getConfigurations()) { - if (config.nodeId.equals(connect.id)) { + if (connect.id != null && connect.id.equals(config.nodeId)) { config.connected = false; } } @@ -576,12 +580,16 @@ private IWearableListener getListener(String packageName, String action, Uri uri private void closeConnection(String nodeId) { WearableConnection connection = activeConnections.get(nodeId); + if (connection == null) { + Log.w(TAG, "closeConnection called for unknown nodeId: " + nodeId); + return; + } try { connection.close(); } catch (IOException e1) { Log.w(TAG, e1); } - if (connection == sct.getWearableConnection()) { + if (sct != null && connection == sct.getWearableConnection()) { sct.close(); sct = null; }