【问题标题】:Phone call in background of my android app在我的 Android 应用程序后台打电话
【发布时间】:2021-08-01 15:09:48
【问题描述】:

我知道如何使用 Intent 从我的应用拨打电话,但显示的是 Android 拨号 UI。是否有可能在不显示 Android 拨号 UI 并在显示我的应用程序时在后台运行电话的情况下执行此操作?

【问题讨论】:

    标签: android background phone-call


    【解决方案1】:

    首先创建一个服务,然后准备一个标志来检查来电是否来自您自己的应用程序。 现在,如果来电,服务会找到它,如果标志为真,则启动您的活动。

    public class OutgoingCallReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, final Intent intent) {
        //check the flag 
        if(GlobalDefinitions.IsProgramRunning) {
            //open your activity immediately after a call
            Intent intent1 = new Intent(context, YOURACTIVITY.class);
            intent1.setFlags(FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent1);
            GlobalDefinitions.IsProgramRunning=false;
        }
    }
    

    调用:

    public static void Call( Context context, String phoneNumber) {
    
        if (!phoneNumber.equals("") ) {
            GlobalDefinitions.IsProgramRunning=true;
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("tel:" + phoneNumber));
            context.startActivity(intent);
        }
    }
    

    不要忘记将权限和服务添加到清单中

    <receiver android:name=".services.OutgoingCallReceiver">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
    </receiver>
    
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    

    【讨论】:

      【解决方案2】:

      您可以请求权限SYSTEM_ALERT_WINDOW (http://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW)

      这允许您显示具有“始终在顶部”行为的屏幕,该行为将显示在通话中的屏幕上。

      Facebook 将此权限用于他们的聊天头功能。

      【讨论】:

      • 我想你误会了,他不希望他的应用程序“漂浮”在拨号器前,他根本不希望拨号器出现。
      • 我不知道在不显示拨号器 UI 的情况下拨打电话的方法,因此我建议一种可能的解决方案,即制作一个将拨号器 UI 隐藏在其后面的屏幕。
      【解决方案3】:

      不,这绝对不可能,而且有充分的理由。您不应该在用户不知情的情况下拨打电话。

      【讨论】:

      • 并非总是如此。在紧急系统中,您可能想要隐藏您正在拨打电话,以便入侵者在注意到有人拨打电话时不会变得暴力。我承认你在说什么,但不要认为你已经尽可能多地考虑了你的答案。
      猜你喜欢
      • 2015-12-24
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多