簡體   English   中英

如何在 Flutter 中直接撥打電話

[英]How can I make a direct PHONE CALL in Flutter

我需要在 flutter 中直接撥打電話,但它只是打開電話應用程序撥號器。
沒有直接打電話。

事實上,我也嘗試使用url_launcher包來完成這項任務,但得到的結果相同。

    _launchURL() async {
    SimplePermissions.requestPermission(Permission.CallPhone)
        .then((state) async {
      if (state == PermissionStatus.authorized) {
        String a = Uri.encodeFull("#");
        String url = 'tel:*123' + a;
        if (await canLaunch(url)) {
          await launch(url);
        } else {
          throw 'Could not launch $url';
        }
      }
    });}

有沒有人解決過這個問題?

免責聲明:插件作者在這里。

自 Android API 級別 26 起,公開了方法sendUssdRequest以發出靜默 USSD 請求。

我制作了一個名為ussd_service的 Flutter 插件,以便能夠在 Flutter 應用程序中輕松地從 dart 訪問它。 它可以按以下方式使用:

import 'package:ussd_service/ussd_service.dart';

makeMyRequest() async {
  int subscriptionId = 1; // sim card subscription Id
  String code = "*21#"; // ussd code payload
  try {
    String ussdSuccessMessage = await UssdService.makeRequest(subscriptionId, code);
    print("succes! message: $ussdSuccessMessage");
  } on PlatformException catch (e) {
    print("error! code: ${e.code} - message: ${e.message}");
  }
};

makeMyRequest();

希望這可以幫助! 如果您有任何問題,請在Github repo的問題上告訴我。

您需要對特殊字符使用 URL 編碼。

像這樣:

launch("tel:" + Uri.encodeComponent('*123#'));

為此,我制作了一個名為flutter_phone_direct_caller的插件。

你可以像這樣使用它:

import 'package:flutter/material.dart';
import 'package:flutter_phone_direct_caller/flutter_phone_direct_caller.dart';

void main() {
  runApp(Scaffold(
    body: Center(
      child: RaisedButton(
        onPressed: _callNumber,
        child: Text('Call Number'),
      ),
    ),
  ));
}

_callNumber() async{
  const number = '08592119XXXX'; //set the number here
  bool res = await FlutterPhoneDirectCaller.callNumber(number);
}

希望它可以幫助某人。

將這些包添加到您的依賴項中:

android_intent_plus: ^2.0.0
permission_handler: ^8.1.4+2

將它們導入到你的.dart 文件中:

import 'package:android_intent_plus/android_intent.dart';
import 'package:permission_handler/permission_handler.dart';

在您的main()函數中請求電話許可:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Permission.phone.request();
  runApp(const MyApp());
}

最后,您可以像這樣直接撥打電話:

AndroidIntent intent = const AndroidIntent(
  action: 'android.intent.action.CALL',
  data: 'tel:2125551212',
);
await intent.launch();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM