在接到电话时把应用程序带到前面

时间:2013-12-20 09:36:29

标签: android-intent android-activity android

我希望在接到电话时将我的应用程序带到电话应答屏幕前面。接到电话后,我完成了每个编码部分。但该应用程序并没有出现在前面。它只是打开并保持在电话呼叫应答屏幕下方。
我想把我的应用程序带到这个屏幕的前面。

我做了类似下面的事情:

Intent i = new Intent(); i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
                    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
ComponentName cn = new ComponentName(this, MainActivity.class);
i.setComponent(cn); 
startActivity(i);

但没有变化。

2 个答案:

答案 0 :(得分:0)

您需要实现一项服务以从后台调用应用程序。

public class LaunchApplication extends Service {

    String PubNubmessage;

    public LaunchApplication() {
        super();

    }

    @Override
    public void onCreate() {

        super.onCreate();


    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        LaunchApplicationWhenReceivedCall();

        return START_NOT_STICKY;
    }

    private void LaunchApplicationWhenReceivedCall() {
        Intent intent1 = new Intent(getApplicationContext(), HomeActivity.class);

        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intent1);
    }

    @Override
    public IBinder onBind(Intent intent) {

        return null;
    }

}

现在,当您的应用检测到来电时,请启动服务。

答案 1 :(得分:0)

优先级添加到接收器..这将有助于在安卓os os本地传入呼叫之前调用

<receiver android:name="com.companyname.receivers.InComingCallReceiver" >
        <intent-filter android:priority="2147483647" >
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
 </receiver>

希望这会有所帮助