在我的Android应用程序的背景中打电话

时间:2014-04-28 14:44:34

标签: android background phone-call

我知道如何使用意图从我的应用程序拨打电话,但会显示Android拨号UI。有没有可能在没有显示Android拨号UI并在我的应用程序显示时在后台运行电话的情况下这样做?

4 个答案:

答案 0 :(得分: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" />

答案 1 :(得分:0)

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

允许您显示带有&#34;始终在顶部&#34;将在通话屏幕上显示的行为。

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

答案 2 :(得分:0)

不,这绝对不可能,而且有充分的理由。如果没有用户的知识,你就不应该拨打电话。

答案 3 :(得分:-2)

来电不显示在手机后台