我有一个服务包括电话状态侦听器,并由我的 application.in 版本 2.3.3 启动
当我退出应用程序电话管理器时获得 null 因此电话状态侦听器在任何想法下都不起作用服务代码?我在哪里做错了?
当我退出应用程序时服务不会破坏。但监听器得到 NULL。setCallListener() 方法上的电话管理器设置。
我有一个服务可以用来初始化phonestatelistener。服务以两种方式启动:
1-通过 BOOT_COMPLETED 接收器(工作正常,侦听器不为空并捕获呼叫) 2-通过我的应用程序与 startService(new Intent(getApplicationContext(), MyPhoneStateListener.class));
问题是,当我的应用程序启动服务时,我的应用程序完成,在这种情况下,我的监听器不起作用。我知道 TelephoneManager=null 值。我如何提供使服务意图在应用程序完成时继续进行?
public class MyPhoneStateListener extends Service{
SmsBroadcastReceiver _smsbroadcast;
private Context context;
MyCustomStateListener myCustomStateListener;
TelephonyManager telephonymanager;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
setCallListener();
_smsbroadcast=new SmsBroadcastReceiver();
GetShieldState();
return START_STICKY;
}
private void setCallListener()
{
try
{
if (telephonymanager==null)
{
telephonymanager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);
myCustomStateListener = new MyCustomStateListener(context,telephonymanager);
telephonymanager.listen(myCustomStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
}
catch(Exception ex)
{
}
}
@Override
public void onCreate()
{
//Log.e("startservis","create");
context=MyPhoneStateListener.this;
super.onCreate();
}
@Override
public void onDestroy()
{
Log.e("onDestroy","destroy");
}
@Override
public boolean onUnbind(Intent intent)
{
//Toast.makeText(getApplicationContext(),"unbind:", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
}
}