我需要扑朔迷离地拨打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';
}
}
});}
答案 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#'));
但是打开电话应用程序,我需要在后台发送呼叫,并且不打开电话应用程序