我正在实现类似的功能 - 将会有一个按钮,如果用户点击该按钮,则会将用户带到特定的 Facebook 个人资料,以便通过 Facebook 进行交流。我已经通过url_launche实现了,但是不起作用。它显示错误 - 无法启动该 URL。
这是我的代码:
Future<void> launchFacebookProfile(String profileId) async {
final Uri fbUri = Uri.parse('fb://profile/$profileId'); // Facebook app
final Uri webUri = Uri.parse('https://www.facebook.com/$profileId'); // Fallback web URL
try {
if (await canLaunchUrl(fbUri)) {
// Open the Facebook app
await launchUrl(fbUri, mode: LaunchMode.externalApplication);
} else if (await canLaunchUrl(webUri)) {
// Fallback to opening in a web browser
await launchUrl(webUri, mode: LaunchMode.externalApplication);
} else {
throw 'Could not launch Facebook profile';
}
} catch (e) {
CustomSnack.warningSnack(e.toString());
}
}
您可以使用提供的链接- https://www.facebook.com/userID
这里是 AndroidMenifext.xm 文件意图:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="whatsapp" android:host="send" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent-filter>
请帮助我解决问题并实现该功能。预先感谢。
我使用
MethodChannel
本地实现它,而不使用 url_launcher
。将原生代码与flutter中的MethodChannel连接起来。
final platform = const MethodChannel("your_method_channel_key");
openBrowser(String url) async {
Map<String, String> args = {
"url": url //your url
};
await platform.invokeMethod("openBrowser", args);
}
现在让我们用本机代码打开 URL。
科特林
if(methodCall.method == "openBrowser"){
val arguments = methodCall.arguments as? Map<String, String>
val url = arguments?.get("url")
if (url != null) {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
result.success(true)
} else {
result.error("INVALID_ARGUMENTS", "URL is required", null)
}
}
迅速
if methodCall.method == "openBrowser" {
if let args = methodCall.arguments as? [String: String],
let urlString = args["url"],
let url = URL(string: urlString) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
result(true)
} else {
result(FlutterError(code: "INVALID_ARGUMENT", message: "Invalid URL", details: nil))
}
}