我是android编程的新手。所以请帮帮我.. 我正在开发一个应用程序,它持续监视当前位置。我希望他的应用程序在后台运行,即使用户去另一个应用程序。当我返回到我的应用程序时,他将能够停止位置更新。一切都是工作正常,直到我拨打电话。我在拨打电话后无法删除位置更新。
以下是我的代码..
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);
}
答案 0 :(得分:0)
使用BroadcastReceiver
在Manifest中注册接收器:
<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>
清单中的权限:
<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.
}
}
}
希望这有帮助。