写点什么

harmony_flutter 实现拨打电话功能

作者:flfljh
  • 2024-12-18
    湖南
  • 本文字数:1355 字

    阅读完需:约 4 分钟

harmony_flutter 实现拨打电话功能

ohos 端建立通

import call from '@ohos.telephony.call';import {  FlutterPlugin,  FlutterPluginBinding} from '@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';import { MethodCallHandler, MethodResult } from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodChannel';import MethodChannel from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodChannel';import MethodCall from '@ohos/flutter_ohos/src/main/ets/plugin/common/MethodCall';import Log from '@ohos/flutter_ohos/src/main/ets/util/Log';import deviceInfo from '@ohos.deviceInfo';
import bundleManager from '@ohos.bundle.bundleManager'
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO
const TAG: string = "FlutterPhoneDirectCaller"
const CHANNEL_NAME = "flutter_phone_direct_caller";
export class FlutterPhoneDirectCallerPlugin implements FlutterPlugin, MethodCallHandler { getUniqueClassName(): string { return "FlutterPhoneDirectCallerPlugin"; }
private methodChannel: MethodChannel | null = null; private applicationContext: Context | null = null;
onAttachedToEngine(binding: FlutterPluginBinding): void { this.applicationContext = binding.getApplicationContext(); this.methodChannel = new MethodChannel(binding.getBinaryMessenger(), CHANNEL_NAME); this.methodChannel.setMethodCallHandler(this); }
onDetachedFromEngine(binding: FlutterPluginBinding): void { this.applicationContext = null; this.methodChannel?.setMethodCallHandler(null); this.methodChannel = null; }
onMethodCall(call: MethodCall, result: MethodResult): void { try { if (call.method == "callNumber") { const number: string = call.argument("number") Log.i(TAG, deviceInfo.osFullName) this.callNumber(number).then((isSuccess) => { result.success(isSuccess); }); } else { result.notImplemented() } } catch (err) { result.error("Name not found", err.message, null) } }
async callNumber(number: string) { try { await call.makeCall(number) return true; } catch (e) { return false; } }}
复制代码

flutter 端代码拨打电话类代码封装

import 'dart:async';

import 'package:flutter/services.dart';

class FlutterPhoneDirectCaller {

static const MethodChannel _channel =

MethodChannel('flutter_phone_direct_caller');

static Future<bool?> callNumber(String number) async {

return await _channel.invokeMethod(

'callNumber',

<String, Object>{

'number': number,

},

);

}

}


这样就能通过调用 FlutterPhoneDirectCaller 的 callNumber 方法来实现拨打电话的功能了.


用户头像

flfljh

关注

还未添加个人签名 2024-10-29 加入

还未添加个人简介

评论

发布
暂无评论
harmony_flutter 实现拨打电话功能_flfljh_InfoQ写作社区