我在后台运行我的应用程序以每 1 小时获取一次位置。我还把代码用于读取手机状态,如下所示:
public class IncomingCallInterceptor extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
String msg = "Phone state changed to " + state;
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
msg += ". Incoming number is " + incomingNumber;
// TODO This would be a good place to "Do something when the phone rings" ;-)
}
if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)){
Intent i = context.getPackageManager()
.getLaunchIntentForPackage(
context.getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(i);
}
}
}
当我的应用程序正在运行并且有任何电话来电时,它工作正常。电话结束后,它会回到我的应用程序。但主要问题是当我的应用程序没有运行并且任何电话来电并且通话结束后,我的应用程序会自动启动。我认为原因是我在后台运行我的应用程序,这就是它自动启动的原因。但它必须在后台运行。那么当应用程序实际上没有运行时,在呼叫结束后停止我的应用程序自动启动的解决方案是什么??