uni-app 插件需求 拨打手机号弹出卡1与卡2选择 悬赏200元

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 插件需求 拨打手机号弹出卡1与卡2选择 悬赏200元

2 回复

不需用吧,如果手机支持双卡双待,拨打电话时,体统会自动让用户选择卡1或者卡2


针对您的需求,在uni-app中实现拨打手机号时弹出卡1与卡2选择的功能,由于原生应用对电话功能的控制较为严格,特别是涉及多SIM卡选择,这通常需要依赖原生代码进行实现。以下是一个大致的实现思路及代码示例,供您参考。需要注意的是,这仅是一个示例,实际项目中可能需要根据具体需求进行调整。

实现思路

  1. 原生插件开发:由于uni-app本身是基于Vue.js开发框架,对原生功能的支持需要通过原生插件来实现。您需要为Android和iOS分别开发原生插件。

  2. 插件调用:在uni-app中通过JS调用原生插件的方法,实现拨打电话时弹出SIM卡选择界面。

示例代码

Android原生插件

在Android中,可以通过TelephonyManagerIntent来实现SIM卡选择。以下是一个简化的示例:

// MyPlugin.java
public class MyPlugin extends BasePlugin {
    @Override
    public void invoke(InvokeParam invokeParam, Callback callback) {
        String phoneNumber = invokeParam.getString("phoneNumber");
        Intent intent = new Intent(Intent.ACTION_CALL_PRIVILEGED, Uri.parse("tel:" + phoneNumber));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        mContext.startActivity(intent);
    }
}

注意:ACTION_CALL_PRIVILEGED需要应用具有拨打电话的特权,这通常需要在Manifest文件中声明权限,并且应用需要是系统应用或具有签名权限。

iOS原生插件

在iOS中,可以通过CTTelephonyNetworkInfoUIAlertController来实现SIM卡选择。由于iOS对电话功能的控制更为严格,直接弹出SIM卡选择可能较为困难,通常需要通过UIAlertController让用户手动选择。

// MyPlugin.m
- (void)invoke:(NSDictionary *)options callback:(uniCallback)callback {
    NSString *phoneNumber = options[@"phoneNumber"];
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"选择SIM卡"
                                                                     message:nil
                                                              preferredStyle:UIAlertControllerStyleActionSheet];
    
    // 添加SIM卡选项(这里假设有两个SIM卡)
    [alert addAction:[UIAlertAction actionWithTitle:@"卡1" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // 拨打卡1
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", phoneNumber]]];
    }]];
    [alert addAction:[UIAlertAction actionWithTitle:@"卡2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        // 拨打卡2(这里需要额外的逻辑,iOS原生不支持直接选择SIM卡)
    }]];
    
    // 显示alert
    [self presentViewController:alert animated:YES completion:nil];
}

注意事项

  • 上述代码仅为示例,实际项目中需要根据具体需求进行调整。
  • 对于iOS,由于系统限制,直接选择SIM卡拨打可能无法实现,通常需要通过用户手动选择。
  • 开发原生插件时,需要确保插件的兼容性和安全性。
  • 考虑到悬赏金额,此示例代码仅供参考,实际开发可能需要更多时间和成本。
回到顶部