我如何直接在颤振中进行USSD呼叫

时间:2018-12-15 14:33:36

标签: android ios flutter

我需要扑朔迷离地拨打USSD,但它的拨号器会打开。

即使我们获得了拨号程序,我也使用了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';
    }
  }
});}

4 个答案:

答案 0 :(得分:1)

免责声明:plugin作者在这里。

自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的问题。

答案 1 :(得分:1)

我为此专门制作了一个名为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);
}

希望它能对某人有所帮助。

答案 2 :(得分:0)

您需要对特殊字符使用URL编码。

赞:

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

答案 3 :(得分:0)

我正在使用

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

但是打开电话应用程序,我需要在后台发送呼叫,并且不打开电话应用程序