在android中完成传出呼叫后停止位置更新
我是android编程新手,所以请帮帮我。。 我正在开发一个应用程序,它会持续监控当前位置。我希望该应用程序在后台运行,即使用户使用其他应用程序。当他返回到我的应用程序时,他将能够停止位置更新。在我拨打外呼之前,一切都正常。在外呼后,我无法删除位置更新 下面是我的代码在android中完成传出呼叫后停止位置更新,android,Android,我是android编程新手,所以请帮帮我。。 我正在开发一个应用程序,它会持续监控当前位置。我希望该应用程序在后台运行,即使用户使用其他应用程序。当他返回到我的应用程序时,他将能够停止位置更新。在我拨打外呼之前,一切都正常。在外呼后,我无法删除位置更新 下面是我的代码 tb_trackstartstop.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void
tb_trackstartstop.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
trackflag=true;
tracklistener(HomeActivity.this);
}
else
{
if(trackflag)
trackmlocManager.removeUpdates(trackmlocListener);
trackflag=false;
Toast.makeText(HomeActivity.this, "Stopped", Toast.LENGTH_LONG).show();
}
}
我的onpause和onresume代码如下
@Override
protected void onPause()
{
super.onPause();
bundle.putBoolean("trackflagState", trackflag);
}
@Override
protected void onResume()
{
super.onResume();
trackflag=bundle.getBoolean("trackflagState",false);
}
使用
BroadcastReceiver
在舱单中注册接收人:
<receiver android:name=".MyCallReciever">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
希望这能有所帮助。什么是
trackflag
在一个拨出的电话之后,你返回到你的应用程序?@Darwindtrackflag
的值是真的,你是否最终进入了onCheckChangedListener
的部分?@Darwind实际上我想要的是如果trackflag
是真的,而onCheckChanged
是真的false那么我希望停止locationlistener是的,我理解-这就是为什么问;-)是trackmlocManager.removeUpdates(trackmlocListener)代码>打过电话吗?谢谢你的回答。但广播接收器适用于来电。我想是的。我希望应用程序在执行传出呼叫后能正常运行,并且只有在我更改切换按钮的状态后才应该重新启动。在意向过滤器中添加
。我认为应该行得通。请在您尝试后让我知道。上面的代码在MyCallReceiver
您从哪里获得NPE上给出了一个空指针异常@MyCallReceiver中的LalNullPointerException
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
public class MyCallReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)) {
//Unregister the location listener here.
}
}
}