我希望在接到电话时将我的应用程序带到电话应答屏幕前面。接到电话后,我完成了每个编码部分。但该应用程序并没有出现在前面。它只是打开并保持在电话呼叫应答屏幕下方。
我想把我的应用程序带到这个屏幕的前面。
我做了类似下面的事情:
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);
但没有变化。
答案 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>
希望这会有所帮助