Skip to content

[url_launcher] Android API 34 support #4660

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Aug 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/url_launcher/url_launcher_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 6.0.38

* Updates android implementation to support api 34 broadcast receiver requirements.

## 6.0.37

* Sets android.defaults.buildfeatures.buildconfig to true for compatibility with AGP 8.0+.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ android {
}

dependencies {

// Java language implementation
implementation "androidx.core:core:1.10.1"
implementation 'androidx.annotation:annotation:1.6.0'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-core:5.1.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import androidx.core.content.ContextCompat;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -143,7 +144,8 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
webview.setWebChromeClient(new FlutterWebChromeClient());

// Register receiver that may finish this Activity.
registerReceiver(broadcastReceiver, closeIntentFilter);
ContextCompat.registerReceiver(
this, broadcastReceiver, closeIntentFilter, ContextCompat.RECEIVER_EXPORTED);
}

@VisibleForTesting
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:async';
import 'dart:io';

import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
Expand All @@ -20,4 +23,41 @@ void main() {
// sms:, tel:, and mailto: links may not be openable on every device, so
// aren't tested here.
});

testWidgets('launch and close', (WidgetTester _) async {
final UrlLauncherPlatform launcher = UrlLauncherPlatform.instance;

// Setup fake http server.
final HttpServer server = await HttpServer.bind(InternetAddress.anyIPv4, 0);
unawaited(server.forEach((HttpRequest request) {
if (request.uri.path == '/hello.txt') {
request.response.writeln('Hello, world.');
} else {
fail('unexpected request: ${request.method} ${request.uri}');
}
request.response.close();
}));
// Https to avoid cleartext warning on android.
final String prefixUrl = 'https://${server.address.address}:${server.port}';
final String primaryUrl = '$prefixUrl/hello.txt';

// Launch a url then close.
expect(
await launcher.launch(primaryUrl,
useSafariVC: true,
useWebView: true,
enableJavaScript: false,
enableDomStorage: false,
universalLinksOnly: false,
headers: <String, String>{}),
true);
await launcher.closeWebView();
// Delay required to catch android side crashes in onDestroy.
//
// If this test flakes with an android crash during this delay the test
// should be considered failing because this integration test can have a
// false positive pass if the test closes before an onDestroy crash.
// See https://github.com/flutter/flutter/issues/126460 for more info.
await Future<void>.delayed(const Duration(seconds: 5));
});
}
3 changes: 1 addition & 2 deletions packages/url_launcher/url_launcher_android/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ name: url_launcher_android
description: Android implementation of the url_launcher plugin.
repository: https://github.com/flutter/packages/tree/main/packages/url_launcher/url_launcher_android
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+url_launcher%22
version: 6.0.37

version: 6.0.38
environment:
sdk: ">=2.18.0 <4.0.0"
flutter: ">=3.3.0"
Expand Down