【发布时间】:2021-08-01 15:09:48
【问题描述】:
我知道如何使用 Intent 从我的应用拨打电话,但显示的是 Android 拨号 UI。是否有可能在不显示 Android 拨号 UI 并在显示我的应用程序时在后台运行电话的情况下执行此操作?
【问题讨论】:
标签: android background phone-call
我知道如何使用 Intent 从我的应用拨打电话,但显示的是 Android 拨号 UI。是否有可能在不显示 Android 拨号 UI 并在显示我的应用程序时在后台运行电话的情况下执行此操作?
【问题讨论】:
标签: android background phone-call
首先创建一个服务,然后准备一个标志来检查来电是否来自您自己的应用程序。 现在,如果来电,服务会找到它,如果标志为真,则启动您的活动。
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" />
【讨论】:
您可以请求权限SYSTEM_ALERT_WINDOW (http://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW)
这允许您显示具有“始终在顶部”行为的屏幕,该行为将显示在通话中的屏幕上。
Facebook 将此权限用于他们的聊天头功能。
【讨论】:
不,这绝对不可能,而且有充分的理由。您不应该在用户不知情的情况下拨打电话。
【讨论】: